镜像image
是Docker架构的三个基本概念之一,就相当于是一个root
文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套Ubuntu16.04最小系统的 root
文件系统。
1、常用命令
- images: 列出本地主机上的所有镜像
- search:查找远程仓库镜像
- pull:从远程服务器拉取镜像
- push:将本地镜像推送到远程镜像仓库
- rmi:删除本地镜像
- save:将本地镜像导出到本地文件
- load:将本地文件导入到本地镜像
- history:查看镜像历史
- tag:给镜像打标记
- import:将URL文件或者本地文件导入到本地镜像
- inspect:查看本地镜像详细信息
可以在命令后面加--help
查看具体命令的详细使用方式:
docker COMMAND --help
2、命令详解
2.1、列出本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
参数说明:
-
OPTIONS
- -a, --all:显示镜像所有信息
- --digests:显示镜像摘要信息
- -f, --filter filter:根据过滤条件显示镜像
- --format string :格式化镜像输出
- --no-trunc:不截断输出
- -q, --quiet:只显示镜像ID
- -a, --all:显示镜像所有信息
- REPOSITORY[:TAG]:仓库:标签,如果不指定仓库,则列出全部本地仓库
默认列出所有镜像
docker iamges
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat10 10.0.8 e5f9a8863052 14 minutes ago 3.17MB
arvin88/tomcat_user 8 4b6a6e0cf6c1 43 hours ago 590MB
arvin88/tomcat_user 8.1 4b6a6e0cf6c1 43 hours ago 590MB
各列说明:
- REPOSITORY:镜像的仓库源
- TAG:镜像标签
- IMAGE ID:镜像ID
- CREATED:镜像的创建时间
- SIZE:镜像大小
列出指定镜像名列表
docker iamges arvin88/tomcat_user
REPOSITORY TAG IMAGE ID CREATED SIZE
arvin88/tomcat_user 8 4b6a6e0cf6c1 43 hours ago 590MB
arvin88/tomcat_user 8.1 4b6a6e0cf6c1 43 hours ago 590MB
列出指定镜像名+标签列表
docker iamges arvin88/tomcat_user:8
REPOSITORY TAG IMAGE ID CREATED SIZE
arvin88/tomcat_user 8 4b6a6e0cf6c1 43 hours ago 590MB
选项:-a,--all
docker iamges -a 或者 docker iamges --all
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat10 10.0.8 e5f9a8863052 14 minutes ago 3.17MB
arvin88/tomcat_user 8 4b6a6e0cf6c1 43 hours ago 590MB
arvin88/tomcat_user 8.1 4b6a6e0cf6c1 43 hours ago 590MB
结果与不加选项条件效果一样。
选项:--digests
docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
tomcat10 10.0.8 <none> e5f9a8863052 20 minutes ago 3.17MB
arvin88/tomcat_user 8 <none> 4b6a6e0cf6c1 43 hours ago 590MB
arvin88/tomcat_user 8.1 <none> 4b6a6e0cf6c1 43 hours ago 590MB
结果输出多了DIGEST
列。
选项:-f, --filter filter
过滤标志(-f
或--filter
)的格式为key=value
,如果有多个过滤,则传多个标志(--filter "foo=bar" --filter "bif=baz"
)
目前支持的过滤器有:
- dangling (boolean - true or false) 显示没有标签的镜像
docker images -f "dangling=true"
- label (
label=<key>
orlabel=<key>=<value>
) 根据构建的Dockerfile里面的LBAEL过滤
docker images -f "label=com.example.version"
- before (
<image-name>[:<tag>]
,<image id>
or<image@digest>
) 显示给定的镜像之前创建的镜像
docker images --filter "before=4b6a6e0cf6c1"
- since (
<image-name>[:<tag>]
,<image id>
or<image@digest>
) 显示给定的镜像之后创建的镜像
docker images --filter "since=4b6a6e0cf6c1"
- reference (pattern of an image reference) 根据表达式过滤镜像
docker images --filter=reference=‘*/*‘
选项:--format
格式化占位符如下:
-
.ID
:镜像ID -
.Repository
:镜像仓库源 -
.Tag
:镜像名 -
.Digest
:镜像摘要 -
.CreatedSince
:镜像创建以来经过的时间 -
.CreatedAt
:镜像创建时间 -
.Size
:镜像大小
语法如下:
docker images --format "{{.ID}}:{{.Repository}}:{{.Tag}}:{{.CreatedAt}}"
e5f9a8863052:tomcat10:10.0.8:2021-07-29 04:06:54 -0400 EDT
4b6a6e0cf6c1:arvin88/tomcat_user:8:2021-07-27 09:46:49 -0400 EDT
4b6a6e0cf6c1:arvin88/tomcat_user:8.1:2021-07-27 09:46:49 -0400 EDT
选项:--no-trunc
docker images --no-trunc
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat10 10.0.8 sha256:e5f9a88630528d90a58873a8efa7249dbeb961a1405618a105ad4a8e283041e0 2 hours ago 3.17MB
arvin88/tomcat_user 8 sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb 44 hours ago 590MB
arvin88/tomcat_user 8.1 sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb 44 hours ago 590MB
可以看出,会将镜像ID全部输出
选项:-q, --quiet
docker images -q 或 docker images --quiet
e5f9a8863052
4b6a6e0cf6c1
4b6a6e0cf6c1
选项也有可以多个配合使用,比如列出镜像ID并且不截断。
docker images --format=‘{{.ID}}‘ --no-trunc
sha256:e5f9a88630528d90a58873a8efa7249dbeb961a1405618a105ad4a8e283041e0
sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb
sha256:4b6a6e0cf6c14223b914fea42a6be8a49c2d1e9b4358a0f225967f0fafcfa1cb
2.2、搜索远程镜像
docker search [OPTIONS] TERM
参数说明:
- -f, --filter filter 根据过滤条件输出
- --format string 格式化输出
- --limit int 最大输出结果数 (默认 25)
- --no-trunc 不截断输出
参数的-f
、--format
、--no-trunc
与images
的用法类似。
docker search --limit 3 --no-trunc tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementation of the Java Servlet and JavaServer Pages technologies 3081 [OK]
rightctrl/tomcat CentOS , Oracle Java, tomcat application ssl https 6 [OK]
jelastic/tomcat An image of the Tomcat Java application server maintained by Jelastic PaaS. 2
2.3、拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
参数说明:
- -a,--all-tags 拉取所有标签的镜像
- --disable-content-trust 跳过镜像验证(默认true)
- --platform string 如果远程仓库有多个,指定仓库地址
- -q, --quiet 拉取时不输出详细信息
拉取时不设置参数或指定TAG
,则默认获取latest
镜像。
docker pull ykaj9758/tomcat9
Using default tag: latest
latest: Pulling from ykaj9758/tomcat9
469cfcc7a4b3: Pull complete
dd66912d30dc: Pull complete
b9e106a1d03e: Pull complete
6d41cb630740: Pull complete
Digest: sha256:e70bc08b133dc30eb3274e1cfd0628a612d35a1296f1a493ecead4f5ec8c2ee4
Status: Downloaded newer image for ykaj9758/tomcat9:latest
docker.io/ykaj9758/tomcat9:latest
参数用法就不测试了,有兴趣自行测试。
2.3、推送本地镜像到远程仓库
docker push [OPTIONS] NAME[:TAG]
参数说明:
- -a,--all-tags 推送所有标签的镜像
- --disable-content-trust 跳过镜像验证(默认true)
- -q, --quiet 推送时不输出详细信息
docker push -q arvin88/tomcat10:v1
--推送成功,由于这里加了-q,因此没有输出详细推送信息
docker.io/arvin88/tomcat10:v1
2.4、删除本地镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
参数说明:
- -f, --force 强制删除
- --no-prune 不移除该镜像的过程镜像,默认移除
根据镜像仓库删除。
docker rmi ykaj9758/tomcat9
Untagged: ykaj9758/tomcat9:latest
Untagged: ykaj9758/tomcat9@sha256:e70bc08b133dc30eb3274e1cfd0628a612d35a1296f1a493ecead4f5ec8c2ee4
Deleted: sha256:4fe6b09b4e594b5ccc512445f6edad3c8c07774523ee664ef9d010bec992d76a
Deleted: sha256:6ee9982c8811fbf5a54ad29723c6756abf979595cc663dd0eea187a371cd26dd
Deleted: sha256:b35eeacb163e86113cc1f5f6578e4d31a08c185da53415d3b6b0389ba3091409
Deleted: sha256:470497dbb86a60aceb8c48b8ee802cc7a2e42b6973dfc36c8f2c111cb6af9f63
Deleted: sha256:43e653f84b79ba52711b0f726ff5a7fd1162ae9df4be76ca1de8370b8bbf9bb0
也可以根据镜像ID删除。如果需要将本地镜像全部删除,可以在命令后面追加列出所有镜像命令
docker rmi $(docker images)
如果镜像列表中镜像ID有重复,则不能删除,可以加上-f强制删除
docker rmi -f $(docker images)
2.5、将镜像保存为本地文件
docker save [OPTIONS] IMAGE [IMAGE...]
参数说明:
- -o, --output string 输出的文件名
docker save -o tomcat10.tar arvin88/tomcat10
--结果
tomcat10.tar
不使用参数情况下,可以这样:
docker save arvin88/tomcat10 > tomcat10.tar
2.6、将本地文件加载到镜像
docker load [OPTIONS]
参数说明:
- -i, --input string 本地文件名
- -q, --quiet 不输出详细信息
上一步将镜像保存为本地文件,现在将保存后的文件还原为镜像。
docker load -i tomcat10.tar
12295e8f45f4: Loading layer [==================================================>] 3.185MB/3.185MB
Loaded image: arvin88/tomcat10:v1
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
arvin88/tomcat10 v1 e5f9a8863052 4 hours ago 3.17MB
2.7、查看镜像历史
docker history [OPTIONS] IMAGE
参数说明:
- --format string 格式化输出
- -H, --human 输出镜像大小 (default true)
- --no-trunc 不截断输出
- -q, --quiet 只输出镜像ID
以上参数除了-H,--human
,其他与search
命令参数用法一样。
docker history arvin88/tomcat10:v1
IMAGE CREATED CREATED BY SIZE COMMENT
e5f9a8863052 4 hours ago 3.17MB Imported from https://mirror-hk.koddos.net/apache/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8-deployer.tar.gz
加上-H=false结果
IMAGE CREATED AT CREATED BY SIZE COMMENT
e5f9a8863052 2021-07-29T04:06:54-04:00 3165364 Imported from https://mirror-hk.koddos.net/apache/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8-deployer.tar.gz
2.8、给镜像打标记
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
SOURCE_IMAGE[:TAG]:原镜像
TARGET_IMAGE[:TAG]:打标记后的镜像
docker tag arvin88/tomcat10:v1 arvin88/tomcat10:v2
REPOSITORY TAG IMAGE ID CREATED SIZE
arvin88/tomcat10 v1 e5f9a8863052 4 hours ago 3.17MB
arvin88/tomcat10 v2 e5f9a8863052 4 hours ago 3.17MB
2.9、将URL文件或者本地文件导入到本地镜像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
参数说明:
- -c, --change list Dockerfile文件
- -m, --message string 设置镜像信息
- --platform string 如果有多个仓库,指定仓库
将tomcat9从官网拉取下来。
docker import -m="首次拉取Tomcat9" https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz arvin88/tomcat9:v1
Downloading from https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz
Importing [==================================================>] 6.538MB/6.538MB
sha256:9bbb4fc3b91617c09c82322f35c518791ca31e0ca4effdeb87652145ef54d792
REPOSITORY TAG IMAGE ID CREATED SIZE
arvin88/tomcat9 v1 9bbb4fc3b916 28 seconds ago 73.4MB
如果不指定存储名称,则默认<none>
docker import -m="首次拉取Tomcat9" https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz
Downloading from https://mirror-hk.koddos.net/apache/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50-fulldocs.tar.gz
Importing [==================================================>] 6.538MB/6.538MB
sha256:12b66d873fb4aca882f106e7c4616cb08d243779657950a8fdced7cba12593ec
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 12b66d873fb4 33 seconds ago 73.4MB
然后可以使用tag
命令,设置名称及标签
docker tag 12b66d873fb4 tomcat9:v1
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat9 v1 12b66d873fb4 About a minute ago 73.4MB
2.10、查看镜像详细信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker inspect 12b66d873fb4
[
{
"Id": "sha256:12b66d873fb4aca882f106e7c4616cb08d243779657950a8fdced7cba12593ec",
"RepoTags": [
"tomcat9:v1"
],
"RepoDigests": [],
"Parent": "",
"Comment": "首次拉取Tomcat9",
"Created": "2021-07-29T11:58:24.888558636Z",
"Container": "",
"ContainerConfig": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"DockerVersion": "20.10.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": null,
"Cmd": null,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 73362010,
"VirtualSize": 73362010,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/b65458a9b24e69d75b82ad423b42bc36a2969ecaf20687f574c0d26718a67b06/merged",
"UpperDir": "/var/lib/docker/overlay2/b65458a9b24e69d75b82ad423b42bc36a2969ecaf20687f574c0d26718a67b06/diff",
"WorkDir": "/var/lib/docker/overlay2/b65458a9b24e69d75b82ad423b42bc36a2969ecaf20687f574c0d26718a67b06/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:07c25b8b9cae522b03fcde4ad413f0ad1fab9d4b099fcb36108044f4f1351950"
]
},
"Metadata": {
"LastTagTime": "2021-07-29T07:59:59.783788199-04:00"
}
}
]
以上命令是对整个本地镜像进行操作,如果需要对单个镜像操作,可以看下docker image --help
具体使用。