1 镜像管理概述
Docker中的镜像管理包括创建、查看、构建、保存和删除镜像等操作。
Docker提供了客户端命令、编程语言API等操作Docker的方式。本课程中是通过Docker客户端命令实现Docker的操作。
Docker命令行官方文档地址:https://docs.docker.com/engine/reference/commandline/cli/。
1、搜索并拉取镜像:可以使用docker search命令搜索镜像仓库中的镜像信息,然后使用docker pull命令从镜像仓库拉取镜像到本地。
2、查看镜像:使用docker images命令可以查看本地系统中的所有镜像。该命令将列出每个镜像的名称、标签、镜像ID、创建时间和大小等信息。
3、创建镜像:在Docker中创建镜像可以使用Dockerfile(后面讲)定义镜像构建规则,然后使用Docker build命令构建镜像。也可以使用Docker commit命令从正在运行的容器中创建镜像。
4、保存镜像:使用docker save命令将镜像保存为tar文件,可以在不同的Docker主机之间共享。
5、加载镜像:使用docker load命令从tar文件中加载镜像,并创建新的镜像。
6、删除镜像:使用docker rmi命令可以删除指定的镜像,同时可以使用--force选项强制删除正在运行的容器。如果删除一个父镜像,它的所有派生镜像也将被删除。
7、推送镜像:使用docker push命令将本地镜像推送到Docker Hub等仓库中,供其他人使用。
2 搜索镜像
Docker 官方镜像网站: hub.docker.com。
可以在Docker客户端中使用search命令搜索镜像,语法如下:
docker search [OPTIONS] SEARCH_TERM
其中,SEARCH_TERM为要搜索的关键字或表达式,可以是镜像名称、描述、作者等。
常用的选项(OPTIONS)包括:
- --filter STARS: 按镜像的星级进行过滤,可以指定星级的范围。
- --filter IS-OFFICIAL: 按镜像是否为官方镜像进行过滤,取值为true或false。
- --filter IS-AUTOMATED: 按镜像是否为自动构建镜像进行过滤,取值为true或false。
- --no-trunc: 显示完整的镜像描述信息,不截断显示。
- --format: 指定输出结果的格式。
镜像的搜索结果中一般包含5类信息:
- NAME:镜像名称
- DESCRIPTION:描述信息
- STARS:星数(同行点赞数量)
- OFFICIAL:是否为官方发布镜像,[OK]就是官方镜像
- AUTOMATED :是否是自动构建的
3 拉取镜像
可以在Docker客户端中使用pull命令从镜像仓库拉取镜像,语法如下:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
参数说明:
- OPTIONS:可选参数,会影响拉取镜像的行为,比如是否拉取所有标签的镜像
- NAME:必选参数,表示要拉取的镜像名称(如ubuntu)
- TAG:可选参数,表示要拉取的镜像的版本(如18.04),默认值是latest
- @DIGEST:可选参数,表示要拉取的镜像的 SHA256 散列值,可以用于唯一确定镜像的版本
OPTIONS如下所示(了解):
- --all-tags、-a:拉取指定镜像仓库中所有可用的镜像版本,而不仅仅是默认标签的镜像。例如 docker pull -a tomcat 命令将会拉取 Tomcat 镜像仓库中所有可见版本的镜像。
- --disable-content-trust:禁用 Docker 加密签名验证机制(Content Trust)。这样能够加快 Docker 镜像拉取的速度。
- --compress:Docker 默认会尝试将所有的 tar 镜像都压缩成 xz 压缩包,然后再在本地进行解压缩。
- --force-{rmi, overwrite}:强制删除同名镜像,这样就可以重新拉取新的镜像。例如,--force-rmi=true 将会强制将已经存在的同名镜像删除,从而方便重新拉取镜像。
- --platform:拉取指定平台的 Docker 镜像,使用格式为 os/arch/variant,比如 windows/amd64。
- --quiet、-q:使用安静模式下拉取 Docker 镜像,会显示最小的输出信息。
4 搜索和拉取镜像示例
搜索tomcat的官方镜像,在显示结果中展示完成的描述信息:
docker search --filter "is-official=true" --no-trunc tomcat
拉取tomcat镜像:
docker pull tomcat
搜索Docker Hub中MariaDB有哪些版本的镜像:
拉取MariaDB 10.3版本镜像:
docker pull mariadb:10.3
查看本地的所有镜像:
docker image list
docker images # 上面命令的简写,作用相同
5 保存镜像
可以在Docker客户端中使用save命令将一个或多个Docker镜像打包成一个tar文件。这个 tar 文件可以被传输到另一台机器或存储在一个镜像仓库中用于备份或发布。save命令语法如下:
docker save [OPTIONS] IMAGE [IMAGE...]
其中 IMAGE 参数指定了要导出的 Docker 镜像名称或 ID。
OPTIONS 中常用的参数如下:
- -o, --output:指定输出文件的路径和文件名,例如 docker save -o myimage.tar myimage
- --tag:指定要保存的镜像的标签或版本,例如 docker save --tag myimage:latest myimage_latest.tar
使用 docker save 命令打包 Docker 镜像时,可以将多个 Docker 镜像打包到同一个 tar 文件中,例如:
docker save -o myimages.tar tomcat:latest mysql:latest redis:latest
该命令将会将 tomcat、mysql 和 redis 三个镜像打包到名为 myimages.tar 的 tar 文件中。
6 导入镜像
docker load 是 Docker CLI 中的一个命令,用于从一个 tar 存档文件中加载一个或多个 Docker 镜像和它们的依赖层(如果存在)。
docker load [OPTIONS] myimages.tar
其中myimages.tar 指定了要加载的存档文件,可以是本地文件路径或者URL,通过管道将文件传递给 docker load 命令。OPTIONS 中常用的参数如下:
- -i, --input:指定输入文件,例如 docker load -i myimages.tar
- --quiet:仅显示加载进度信息
7 删除镜像
docker rmi 是 Docker CLI 中的一个命令,用于删除不再需要的 Docker 镜像。使用 docker rmi 命令的基本语法如下:
docker rmi [OPTIONS] IMAGE [IMAGE...]
其中,IMAGE 指定要删除的 Docker 镜像的名称或 ID。如果指定多个镜像,可以将它们用空格分隔。 OPTIONS 参数是一些额外选项,常用的选项包括:
- -f, --force:强制删除正在使用的镜像
- --no-prune:不删除未被任何标签或容器引用的镜像
8 保存、导入和删除镜像示例
导出ubuntu镜像为本地文件:
docker save ubuntu > docker-ubuntu.tar
导出mariadb、tomcat镜像到本地文件,使用gzip进行压缩:
docker save mariadb tomcat | gzip > myimages.tar.gz
删除ubuntu镜像:
docker rmi ubuntu
导入docker-ubuntu.tar镜像:
docker load -i docker-ubuntu.tar