学习Docker--镜像操作

本文详细介绍Docker镜像的管理方法,包括获取、查看、搜寻、删除、创建、存出、载入及上传镜像的具体步骤和常用命令。掌握这些技能有助于更高效地管理和使用Docker镜像。

一、获取镜像

语法格式如下

docker [image] pull NAME[:TAG]

例如,获取一个Ubuntu 18.04系统的基础镜像就可以使用如下的命令:

$ docker pull ubuntu:18.04

在这里插入图片描述
从镜像的下载过程可以看出,镜像文件一般由若干层组成,23884877105a这样的串是层的唯一id(完整的id包括256比特,64个十进制字符组成)。使用docker pull命令下载中会获取并输出镜像的各层信息。当不同的镜像包括相同的层时,本地仅存储了层的一份内容,减小了存储空间。

对于Docker镜像来说,如果不显示指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。下面的例子将从Docker Hub的Ubuntu仓库下载一个最新版本的Ubuntu操作系统的镜像:

//该命令实际上下载到的就是ubuntu:latest镜像

$ docker pull ubuntu

严格来说,镜像的仓库名称中还应该添加仓库地址(注册服务器)作为前缀,只是默认使用的是官方Docker Hub服务,该前缀可以忽略。如果想下载别的registry的镜像就需要加上仓库地址,例如下面的命令会从网易蜂巢的仓库中下载镜像,而不是Docker Hub下载。

$ docker pull hub.c.163.com/public/ubuntu:18.04

下载镜像到本地之后,即可随时使用该镜像,例如利用该镜像创建一个容器,在其中运行bash应用,执行打印“Hello World”命令:
在这里插入图片描述

二、查看镜像信息

1. 使用images命令列出镜像
使用如下命令列出本地主机上已有镜像的基本信息:

$ docker images
or
$ docker image ls

在这里插入图片描述
注意:其中镜像的ID信息十分重要,他唯一标识了镜像。在使用镜像ID的时候,一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID。

2. 使用tag命令添加镜像标签
使用docker tag命令为本地镜像任意添加新的标签。例如,添加一个myubuntu:latest镜像标签:

$ docker tag ubuntu:18.04 myubuntu:latest

在这里插入图片描述
之后,用户就可以直接使用myubuntu:latest来表示这个镜像了。而且,可以看到我们新添加标签的镜像和原始镜像的ID是一模一样的,只是别名不同,docker tag命令添加的标签实际上起到了类似于链接的作用。

3. 使用inspect命令查看详细信息
使用docker inspect命令可以获取该镜像的详细信息,包括制作者、适应架构、各层的数字摘要等:

$ docker inspect ubuntu:18.04

在这里插入图片描述
该命令返回的是一个JSON格式的信息,如果我们只要其中一项的内容,可以使用-f来指定,例如,获取镜像的Architecture:

$ docker inspect -f {{".Architecture"}} ubuntu:18.04

在这里插入图片描述
4. 使用history命令查看镜像历史

既然镜像文件由多个层组成,那么怎么知道各个层的内容具体是什么呢?这时候可以使用history子命令,该命令将列出各层的创建信息。
例如,查看ubuntu:18.04镜像的创建过程,可以使用如下命令:

$ docker history ubuntu:18.04

在这里插入图片描述

三、搜寻镜像

使用docker search命令可以搜索Docker Hub官方仓库的镜像。语法为:

docker search [option] keyword

命令选项主要包括:

  • -f, --filter filter:过滤输出内容;
  • –format string:格式化输出内容;
  • –limit int:限制输出结果个数,默认为25个;
  • –no-trunc:不截断输出结果

例如,搜索官方提供的带ubuntu关键字的镜像,如下所示:
在这里插入图片描述

四、删除和清理镜像

1. 使用标签删除镜像
使用docker rmidocker rm命令可以删除镜像,命令格式为:

docker rmi  IMAGE [IMAGE...]   //其中IMAGE可以为标签或ID。

支持选项包括:

  • -f , -force:强制删除镜像,即使有容器依赖它;
  • -no-prune:不要清理未带标签的父镜像。

例如,要删除掉myubuntu:latese镜像,可以使用如下命令:

$ docker rmi myubuntu:latest

在这里插入图片描述
当同一个镜像拥有多个标签时,docker rmi命令只是删除该镜像多个标签中的指定标签而已,并不影响镜像文件,因此上述操作相当于只是删除了镜像的一个标签副本而已。但当镜像只剩一个标签的时候就要小心,此时再使用docker rmi命令会彻底删除镜像。

2. 使用镜像ID删除镜像
当使用docker rmi命令,并且后面跟上镜像的ID(也可以是能进行区分的部分ID串前缀)时,会先尝试删除所有指向该镜像的标签,然后删除该镜像文件本身。
注意:当有镜像创建的容器在运行时,镜像文件默认是无法被删除的,如果想要强行删除镜像,可以使用-f参数。通常并不推荐使用这种方法来强制删除一个存在容器依赖的镜像,正确的做法是先删除依赖该镜像的所有容器,再来删除镜像。

3. 清理镜像
使用Docker一段时间后,系统中可能会遗留一些临时的镜像文件,以及一些没有被使用的镜像,可以通过docker image prune命令来进行清理。
支持选项包括:

  • -a, -all:删除所有无用镜像,不光是临时镜像;
  • -filter filter:只清理符合给定过滤器的镜像;
  • -f, -force:强制删除镜像,而不进行提示确认。

例如,如下命令会自动清理临时的遗留镜像文件层,最后会提示释放的存储空间:

$ docker image prune -f

在这里插入图片描述

五、创建镜像

1. 基于已有容器创建
该方法主要是使用docker commit命令。
在这里插入图片描述
在这里插入图片描述
2. 基于本地模板导入

$ cat ubuntu-18.04-x64_64-minimal.tar.gz | docker import - ubuntu:18.04

3. 基于Dockerfile创建
Dockerfile是一个文本文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。
下面给出一个Dockerfile的简单示例,基于ubuntu:18.04镜像安装Qt 5环境,构成一个新的Qt:5镜像:

FROM ubuntu:18.04

LABEL version="1.0" maintainer="docker user <docker_user@github>"

RUN apt-get update && \
	apt-get install -y qt5-default
	apt-get install -y qtcreator
	apt-get clean && \
	rm -rf /var/lib/apt/lists/*

创建镜像的过程可以使用docker build命令,编译成功后本地将多出一个Qt:5镜像:

$ docker build -t Qt:5 .
...
Successful built xxxxxxxxx

六、存出和载入镜像

1. 存出镜像
如果要导出镜像到本地文件,可以使用docker save命令。该命令支持-o、-output string参数,导出镜像到自动的文件中。
例如导出本地的ubuntu:18.04镜像为文件ubuntu_18.04.tar,如下所示:

docker save -o ubuntu_18.04.tar ubuntu:18.04

之后就可以通过复制ubuntu_18.04.tar文件将该镜像分享给他人。

1. 载入镜像
可以使用docker load命令将导出的tar文件再导入到本地镜像库。支持-i、-input string选项,从指定文件中读入镜像内容。
例如,从文件ubuntu_18.04.tar导入镜像到本地镜像列表,如下所示:

docker load -i ubuntu_18.04.tar

docker load < ubuntu_18.04.tar

这将导入镜像及其相关的元数据信息(包括标签等)。导入成功后,可以使用docker images命令进行查看,与原镜像一致。

七、上传镜像

可以使用docker push命令上传镜像到仓库,默认上传到Docker Hub官方仓库(需要登录)。
用户在Docker Hub网站注册后可以上传自制的镜像。
例如,用户user上传本地的test:latese镜像,可以先添加新的标签user/test:latest,然后使用docker push上传镜像:

$ docker tag test:latest user/test:latest
$ docker push user/test:latest
The push refers to a repository [docker.io/user/test]
Sending image list

Please login prior to push:
Username:
Password:
Email:

第一次上传时,会提示输入登录信息或进行注册,之后登录信息会记录到本地~/.docker目录下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝勒里恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值