Docker镜像命令
- 1: Docker的镜像命令
- 2: Docker的images命令
- 3: Docker的search命令
- 4: Docker的tag命令
- 5: Docker的history命令
- 6: Docker的rmi命令
1 - Docker的镜像命令
镜像仓库类的Docker命令:
命令 | 命令描述 |
---|---|
images | 查看本地镜像(列出本地所有镜像) |
inspect | 查看镜像详情 |
search | 查找镜像 |
tag | 修改镜像tag |
history | 显示镜像每层的变更内容 |
rmi | 删除本地镜像 |
pull | 获取镜像 |
push | 推送镜像到仓库 |
login | 登录第三方仓库 |
logout | 退出第三方仓库 |
save | 打包本地镜像, 使用压缩包来完成迁移 |
load | 导入镜像压缩包 |
commit | 将容器保存为镜像 |
build | 使用Dockerfile构建镜像 |
import | 导入本地容器快照文件为镜像 |
2 - Docker的images命令
介绍
https://docs.docker.com/engine/reference/commandline/images/
默认的docker images 命令将显示所有顶级镜像,其存储库和标签,以及它们的大小。
Docker image具有中间层,通过允许缓存每个步骤来提高可重用性,减少磁盘使用并加速docker build。 默认情况下不显示这些中间层。
SIZE是镜像及其所有父镜像占用的累积空间。 这也是Docker save命令制作镜像时创建的Tar文件内容使用的磁盘空间。
如果镜像具有多个存储库名称或标记,则会多次列出该镜像。 此单个镜像(可通过其匹配的IMAGE ID识别)仅使用一次列出的SIZE。
使用
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.12.2 15e9da1ca195 3 months ago 96.5MB
k8s.gcr.io/kube-apiserver v1.12.2 51a9c329b7c5 3 months ago 194MB
k8s.gcr.io/kube-controller-manager v1.12.2 15548c720a70 3 months ago 164MB
<none> <none> b8988e488a42 6 months ago 733MB
envoyproxy/envoy-build-ubuntu 7f7f5666c72e00ac7c1909b4fc9a2121d772c859 936ba3592a5c 8 months ago 2.31GB
通过name和tag来列出镜像
docker images 命令有可选的 [REPOSITORY[:TAG]]
参数,该参数将列表限制为与参数匹配的镜像。
如果指定 REPOSITORY 但没有 TAG,则 docker images 命令会列出给定存储库中的所有图像。
$ docker images istio/pilot
REPOSITORY TAG IMAGE ID CREATED SIZE
istio/pilot 0.7.1 6223c9364df7 10 months ago 51.9MB
$ docker images istio/*
REPOSITORY TAG IMAGE ID CREATED SIZE
istio/istio-ca 0.7.1 5c82fea42c78 10 months ago 42.7MB
istio/mixer 0.7.1 251b0d3d2b93 10 months ago 54MB
6223c9364df7 10 months ago 51.9MB
istio/examples-bookinfo-reviews-v3 1.5.0 7301fee7c9cb 12 months ago 431MB
istio/examples-bookinfo-reviews-v2 1.5.0
$ docker images istio/*:0.7.1
REPOSITORY TAG IMAGE ID CREATED SIZE
istio/istio-ca 0.7.1 5c82fea42c78 10 months ago 42.7MB
istio/mixer 0.7.1 251b0d3d2b93 10 months ago 54MB
istio/sidecar_injector 0.7.1 1db980725edb 10 months ago 33.4MB
过滤
过滤标志(-f
或--filter
)格式为"key=value"。 如果有多个过滤器,则传递多个标志(例如,--filter "foo=bar" --filter "bif=baz"
)
目前支持的过滤器是:
- dangling悬空 (boolean - true or false)
- label (
label=<key>
orlabel=<key>=<value>
) - before (
<image-name>[:<tag>]
,<image id>
or<image@digest>
) - filter images created before given id or references - since (
<image-name>[:<tag>]
,<image id>
or<image@digest>
) - filter images created since given id or references - reference (pattern of an image reference) - filter images whose reference matches the specified pattern
具体看官方文档。
dangling镜像的处理
dangling镜像就是images命令中出现的,REPOSITORY 和 TAG 都显示为 <none>
的镜像,如:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
......
<none> <none> b8988e488a42 6 months ago 733MB
可以通过过滤器将dangling镜像都找出来:
$ docker images --filter "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> b8988e488a42 6 months ago 733MB
这将显示未标记的镜像,这些镜像是镜像树的叶子(不是中间层)。 当镜像的新构建从这个镜像ID取走 repo:tag
,而留下 <none>:<none>
或 untagged 时,会出现这些的镜像。如果在容器当前正在使用镜像时尝试移除镜像,则会发出警告。通过使用此标志,允许批量清理。
可以联合docker rmi
命令一起使用来批量删除dangling镜像:
docker rmi $(docker images -f "dangling=true" -q)
Deleted: sha256:b8988e488a42c652492c6b488f44469245d2088f793c1e6448777afcedb34ca1
3 - Docker的search命令
介绍
https://docs.docker.com/engine/reference/commandline/search/
在Docker Hub中搜索镜像。
搜索查询默认最多返回25个结果。
使用
通过镜像名字搜索:
$ docker search busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 1494 [OK]
progrium/busybox 68 [OK]
hypriot/rpi-busybox-httpd Raspberry Pi compatible Docker Image with a … 45
radial/busyboxplus Full-chain, Internet enabled, busybox made f… 21 [OK]
......
过滤
当前支持的过滤器有:
- stars (int - number of stars the image has)
- is-automated (boolean - true or false) - is the image automated or not
- is-official (boolean - true or false) - is the image official or not
4 - Docker的tag命令
介绍
https://docs.docker.com/engine/reference/commandline/tag/
创建一个引用到 SOURCE_IMAGE 的 tag TARGET_IMAGE
镜像名称由斜杠分隔的名称组件组成,可选地以仓库主机名为前缀。主机名必须符合标准DNS规则,但可能不包含下划线。如果存在主机名,则可以选择后跟端口号如以下格式的 :8080
。如果不存在,该命令默认使用位于 registry-1.docker.io
的Docker公共注册表。名称组件可能包含小写字母,数字和分隔符。分隔符定义为句点,一个或两个下划线,或一个或多个破折号。 名称组件不能以分隔符开头或结尾。
Tag名称必须是有效的ASCII,并且可以包含小写和大写字母,数字,下划线,句点和短划线。 Tag名称不能以句点或短划线开头,最多可包含128个字符。
使用
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
5 - Docker的history命令
介绍
https://docs.docker.com/engine/reference/commandline/history/
显示镜像的历史,显示镜像每层的变更内容
使用
docker history [OPTIONS] IMAGE
如:
$ docker history istio/mixer:0.7.1 --no-trunc
IMAGE CREATED CREATED BY SIZE COMMENT
251b0d3d2b93 10 months ago /bin/sh -c #(nop) CMD ["--configStoreURL=fs… 0B
<missing> 10 months ago /bin/sh -c #(nop) ENTRYPOINT ["/usr/local/b… 0B
<missing> 10 months ago /bin/sh -c #(nop) ADD file:04fbcb926d6c80af5… 53.7MB
<missing> 10 months ago /bin/sh -c #(nop) ADD file:f74cafb0f2a94a0b9… 252kB
6 - Docker的rmi命令
介绍
https://docs.docker.com/engine/reference/commandline/rmi/
删除本地镜像
使用
docker rmi [OPTIONS] IMAGE [IMAGE...]
可以使用镜像的短ID或长ID,Tag或digest删除镜像。
如果镜像有一个或多个引用它的Tag,则必须在删除镜像之前删除所有Tag。通过Tag删除镜像时,将自动删除Digest引用。
或者使用 “-f” 标记来强制删除(包括所有tag的镜像)。
清理镜像
通过 docker system df
命令可以看到当前本地镜像的磁盘使用情况:
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 38 1 7.314GB 7.314GB (99%)
Containers 4 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
可以通过 docker images
命令查看当前本地镜像情况,然后手工删除不需要的镜像。
docker system prune
命令可以帮助删除不需要使用的各种资源。
可以配合 docker images
命令来进行批量删除,如:
$ docker rmi $(docker images istio/* -q)
Untagged: istio/istio-ca:0.7.1
Untagged: istio/istio-ca@sha256:744e7a4426474d10f7984c601590ee6dab304f5cf6677a80b37c3025993dbd4e
Deleted: sha256:5c82fea42c7850f7f42e3b6326bc35b2a8941e77532210d925770eb501c6de1b
Deleted: sha256:8ccea48ceaaffc2fab84cc0d579948a221249d384156f6cfbdbcc9341ec59be7
Deleted: sha256:6ecf4e847360cffdcfe3a5d1b5de4e27b227aa5688c0ed63170cff2ecf7e43f6
Untagged: istio/mixer:0.7.1
......
如果要清空本地镜像,可以执行命令 docker rmi -f $(docker images -q)
。