Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板 。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了 Apache 应用程序(或用户需要的其他软件) 。 可以把它称为一个 Apache 镜像 。镜像是创建 Docker 容器的基础 。通过版本管理和增量的文件系统, Docker 提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用 。
获取镜像:docker [image] pull NAME [ :TAG] 。
docker pull ubuntu: 18. 04 获取一个 Ubuntu 18.04 系统的基础镜像
docker pull ubuntu 下载一个最新版本的Ubunt操作系统的镜像,如果不显式指定TAG, 则默认会选择la迳釭标签,这会下载仓库中最新版本的镜像。
pull 子命令支持的 选项主要包括:
- -a, --all-ags=trueifalse: 是否获取仓库中的所有镜像,默认为否;
- --disable-content-trust:取消镜像的内容校验,默认为真。
使用images命令列出镜像
docker images
![]()
- 来自于哪个仓库, 比如 ubuntu 表示 ubuntu 系列的基础镜像;
- 镜像的标答信息, 比如 18.04 、 latest 表示不同的版本信息。 标签只是标记, 并不能标识镜像内容;
- 镜像的ID(唯一标识镜像), 如果两个镜像的ID 相同, 说明它们实际上指向了同一个镜像, 只是具有不同标签名称而已;
- 创建时间, 说明镜像最后的更新时间;
- 镜像大小, 优秀的镜像往往体积都较小。
images子命令主要支持如下选项, 用户可以自行进行尝试:
- -a, --all 式rue I false: 列出所有(包括临时文件)镜像文件,默认为否;
- --digests=trueifalse: 列出镜像的数字摘要值,默认为否;
- -f, --filer=[] : 过滤列出的镜像, 如dangling 式rue 只显示没有被使用的镜像;也可指定带有特定标注的镜像等;
- --format="TEMPLATE" : 控制输出格式,如. ID代表ID信息,.Repository代表仓库信息等;
- --no-七rune吐rueI false: 对输出结果中太长的部分是否进行截断,如镜像的ID信息,默认为是;
- -q, --quiet式rueI false: 仅输出ID信息, 默认为否。
使用tag命令添加镜像标签
docker tag ubuntu:latest myubuntu:latest
myubuntu:latest镜像的ID跟ubun四: lates七是完全一致的,它们实际上指向了同一个镜像文件,只是别名不同而巳。docker tag命令添加的标签实际上起到了类似链接的作用。
使用inspect命令查看详细信息
docker inspect ubuntu:latest

上面代码返回的是一 个 JSON 格式的消息, 如果我们只要其中一项内容时, 可以使用 -f 来指定, 例如, 获取镜像的RepoTags:
docker inspect --format='{{.RepoTags}}' ubuntu:latest
docker inspect --format='{{.RepoTags}}{{.Created}}-{{range .ContainerConfig.Hostname}}' ubuntu:latest
使用 hitory 命令查看镜像历史
docker history ubuntu:latest

注意, 过长的命令被自动截断了, 可以使用前面提到的 --no-trunc 选项来输出完整命令。
搜寻镜像
使用 docker search 命令可以搜索Docker Hub 官方仓库中的镜像。 语法为 docker search [option] keyword。 支持的
命令选项主要包括:
- -f, --filter filter: 过滤输出内容;
- - -format string: 格式化输出内容;
- --limit int:限制输出结果个数, 默认为 25 个;
- --no-trunc: 不截断输出结果。
docker search nginx
例如, 搜索官方提供的带 nginx关键字的镜像, 如下所示:
docker search --filter=is-official=true nginx
搜索所有收藏数超过10的,关键词为nginx的镜像,如下所示:
docker search --filter=stars=10 nginx
删除和清理镜像
使用 docker rmi 或 docker image rm 命令可以删除镜像, 命令格式为 docker rmi IMGE [IMAGE ... ], 其中 IMAGE 可以为标签或 ID。支持选项包括:
- -f, -force: 强制删除镜像, 即使有容器依赖它;
- -no-prune: 不要清理未带标签的父镜像。
使用标签删除镜像
docker rmi myubuntu:latest
当同一个镜像拥有多个标签的时候, docker rmi 命令只是删除了该镜像多个标签中的指定标签而巳, 并不影响镜像文件。
但当镜像只剩下 一个标签的时候就要小心了, 此时再使用 docker rmi 命令会彻底删除镜像。
使用镜像ID来删除镜像
docker rmi 94e814e2efa8
当使用 docker rmi 命令, 并且后面跟上镜像的 ID (也可以是能进行区分的部分ID串前缀)时, 会先尝试删除所有指向该镜像的标签, 然后删除该镜像文件本身。
注意, 当有该镜像创建的容器存在时, 镜像文件默认是无法被删除的。

如果要想强行删除镜像, 可以使用-f参数:
docker rmi -f 94e814e2efa8
注意, 通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。
清理镜像
使用Docker 一段时间后, 系统中可能会遗留一些临时的镜像文件, 以及一些没有被使用的镜像, 可以通过docker image prune命令来进行清理。
支待选项包括:
- -a, -all: 删除所有无用镜像, 不光是临时镜像;
- -filter filter: 只清理符合给定过滤器的镜像;
- -f, -force: 强制删除镜像, 而不进行提示确认。
docker image prune-f
创建镜像
基于已有容器创建
该方法主要是使用 docker [container] commit命令。
命令格式为 docker [container] commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]], 主要选项包括:
- -a, --author="": 作者信息;
- -c, - -change=[] : 提交的时候执行 Dockerfle指令, 包括 CMD|ENTRYPOINT |ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKIRNVIEXPOSEILABELIONBUILDIUSERIVOLUMEIWORKIR等;
- -m, - -message="": 提交消息;
- -p, --pause=true: 提交时暂停容器运行。


基于本地模板导入

基于 Dockerfile 创建

存出和载人镜像
存出镜像
如果要导出镜像到本地文件,可以使用 docker [image] save 命令 。 该命令支持 -o 、 -output string 参数 , 导出镜像到指定的文件中 。
docker save -o ubuntu_latest.tar ubuntu:latest
之后,用户就可以通过复制 ubuntu_latest.tar 文件将该镜像分享给他人。
载入镜像
可以使用 docker [image] load 将导出的 tar 文件再导人到本地镜像库。支持 -i, -input string 选项,从指定文件中读人镜像内容。
docker load -i ubuntu_latest.tar (Loaded image: ubuntu:latest)
上传镜像

这篇博客详细介绍了Docker镜像的管理,包括如何获取、列出、查看、删除和创建镜像,以及如何使用Dockerfile创建镜像,还涉及到镜像的存储和迁移。重点讲解了docker pull、docker images、docker inspect、docker history、docker rmi等关键命令的使用方法。
&spm=1001.2101.3001.5002&articleId=89332631&d=1&t=3&u=e9d10691c3dc4ea1a075e1280e395fa0)
1万+

被折叠的 条评论
为什么被折叠?



