一、获取镜像
语法:
docker [image] pull 镜像名
格式:
docker [image] pull NAME[:TAG]
NAME 表示镜像仓库名称(用来区分镜像)
TAG 表示镜像的标签(一般表示版本信息)
如果不显示指定TAG 则默认会选择latest标签 最新版
实例:下载一个最新的Ubuntu操作系统镜像
$ docker pull ubuntu:18.04
注意:如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像
二、查看镜像信息
2.1、使用images命令列出镜像
语法:
docker images 或者 docker image ls
选项:
-a,--all=true|false : 列出所有镜像文件,默认否
--digests=true|false: 列出镜像的数字摘要值 默认为否
-f,--filter=[]: 过滤列出的镜像,如dangling=true只显示没有被使用的镜像,也可以指定带有特定标注的镜像
--format="TEMPLATE" 控制输出格式, .ID代表ID信息,.Repository代表仓库信息
--no-trunc=true|false: 对输出结果中太长的部分是否进行截断,如镜像的id信息,默认是
-q,--quiet=true|false :仅输出id信息,默认为否
docker images --digests=true
来自哪个仓库/镜像的标签信息/镜像的id/创建时间/镜像大小
同等效果命令:
# docker image list # docker image list # docker image ls
2.2、使用tag命令添加镜像标签
语法:
docker tag 镜像名:标签名 自定义镜像名:标签名
案例:添加一个新的myubuntu18.4标签
docker tag ubuntu:latest myubuntu:latest
2.3、inspect命令查看详细信息
格式:
docker [image] inspect 镜像名
案例:查看ubuntu镜像的详细信息
docker [image] inspect ubuntu
查看某一项内容,使用-f指定:
docker [image] inspect -f {{".Architecture"}} 镜像名
2.4、history命令查看镜像历史
格式:
docker history 镜像名
实例,查看ubuntu镜像的历史信息
docker history ubuntu:latest
四、下载指定版本的镜像
[root@localhost docker]# docker pull ubuntu:18.04 18.04: Pulling from library/ubuntu 7c457f213c76: Pull complete Digest: sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98 Status: Downloaded newer image for ubuntu:18.04 docker.io/library/ubuntu:18.04
严格讲,镜像的仓库名称中还应该添加仓库地址,(注册服务器registry)上面2条命令实际执行了:
$ sudo docker pull registry.hub.docker.com/ubuntu:latest 从默认的注册服务器registry.hub.docker.com中的ubuntu仓库下载标记标为latest的镜像
除从默认的仓库中下载之外,也可以从其他注册服务器的仓库下载
实例:从DockerPool社区的镜像源dl.dockerpool.com下载最新的Ubuntu镜像
$ sudo docker pull dl.dockerpoll.com:5000/ubuntu
pull 子命令支持的选项主要包括:
-a,--all-tags=true|false: 是否获取仓库中的所有镜像,默认为否
--disable-content-trust: 取消镜像的内容校验 默认为真
有时,需要使用镜像代理服务器来加速Docker镜像获取过程,可以再Docker服务启动配置中增加--registry -mirror=proxy_URL来指定镜像代理服务地址(如https://registry.docker-cn.com)
下载镜像到本地之后,可以随时使用镜像了
实例:利用该镜像创建一个容器,运行bash应用,并打印一个“hello world”命令
$ sudo docker run -t -i ubuntu /bin/bash root@fe7fc4bd8fc9:/#echo "hello world" root@fe7fc4bd8fc9:exit
五、搜索镜像 docker search ...
语法:docker search [OPTIONS] 镜像名
options:
--automated :只列出 automated build类型的镜像
--no-trunc :显示完整的镜像描述
-f,--filter filter:格式化输出内容
--limit int:限制输出结果个数,默认为25个
例如:搜索收藏数大于10的java镜像
[root@iZ8vb9nmgwljcf9m2wxaekZ ~]# docker search -f stars=10 java NAME DESCRIPTION STARS OFFICIAL AUTOMATED node Node.js is a JavaScript-based platform for s… 10696 [OK] tomcat Apache Tomcat is an open source implementati… 3164 [OK]
六、查看docker详细信息 docker inspect ...
docker inspect 获取镜像的详细信息
语法:docker inspect 镜像名称
[root@iZ8vb9nmgwljcf9m2wxaekZ ~]# docker inspect hello-world
[
{
"Id": "sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412",
"RepoTags": [
"hello-world:latest"
],
"RepoDigests": [
"hello-world@sha256:37a0b92b08d4919615c3ee023f7ddb068d12b8387475d64c622ac30f45c29c51"
],
"Parent": "",
"Comment": "",
"Created": "2021-09-23T23:47:57.442225064Z",
"Container": "8746661ca3c2f215da94e6d3f7dfdcafaff5ec0b21c9aff6af3dc379a82fbc72",
"ContainerConfig": {
"Hostname": "8746661ca3c2",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"/hello\"]"
],
"Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "20.10.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/hello"
],
"Image": "sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 13256,
"VirtualSize": 13256,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/d6b0548cb8da112535fdfcaa6c981a1c6570a99bb001712752f5dca8e4f7d3fe/merged",
"UpperDir": "/var/lib/docker/overlay2/d6b0548cb8da112535fdfcaa6c981a1c6570a99bb001712752f5dca8e4f7d3fe/diff",
"WorkDir": "/var/lib/docker/overlay2/d6b0548cb8da112535fdfcaa6c981a1c6570a99bb001712752f5dca8e4f7d3fe/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]docker inspect命令的参数可以更快地获得想要的信息
docker inspect [OPTIONS] NAME|ID [NAME|ID...] OPTIONS说明: -f :指定返回值的模板文件。 -s :显示总的文件大小。 --type :为指定类型返回JSON。
[root@iZ8vb9nmgwljcf9m2wxaekZ ~]# docker inspect -f '镜像创建时间是:{{.Created}}' hello-world
镜像创建时间是:2021-09-23T23:47:57.442225064Z
[root@iZ8vb9nmgwljcf9m2wxaekZ ~]# docker inspect -f '{{.Container}}' hello-world
8746661ca3c2f215da94e6d3f7dfdcafaff5ec0b21c9aff6af3dc379a82fbc72json格式返回 (注意 json 后面跟一个空格)
[root@iZ8vb9nmgwljcf9m2wxaekZ ~]# docker inspect --format='{{json .Config}}' hello-world
{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/hello"],"Image":"sha256:b9935d4e8431fb1a7f0989304ec86b3329a99a25f5efdc7f09f3f8c41434ca6d","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null}七、删除镜像
5-1、使用标签删除镜像
docker rmi或docker image rm命令可以删除镜像
格式:docker rmi IMAGE [ IMAGE…… ]
IMAGE可以为标签或ID
选项:
-f,-force:强制删除镜像,即使有容器依赖它
-no-prune:不要清理未带标签的父镜像
例如:删除ubuntu 镜像 使用如下命令
[root@iZ8vb9nmgwljcf9m2wxaekZ ~]# docker rmi ubuntu:14.04 Untagged: ubuntu:14.04 Untagged: ubuntu@sha256:60840958b25b5947b11d7a274274dc48ab32a2f5d18527f5dae2962b64269a3a Deleted: sha256:13b66b487594a1f2b75396013bc05d29d9f527852d96c5577cc4f187559875d0 Deleted: sha256:e08f4f554d8df6b04f441fcdfe207b6314d3c709daa2b1ef66f79bbfb529b8c4 Deleted: sha256:c28d0c854fd56736ef4456e3c1c4276a28159751dc13fd1b340bd38d69473f7e Deleted: sha256:f2fa9f4cf8fd0a521d40e34492b522cee3f35004047e617c75fadeb8bfd1e6b7
5-2.使用镜像ID来删除镜像
语法:docker rmi 容器id
$ docker rmi 8f1bd21bd25c Untagged:ubuntu:18.04 Deleted:sha256:8f1bd21bd25c3fb1d4b00b7936a73a0664f932e11406c48a0ef19d82fd0b7342 Deleted:sha256:8ea3b9ba4dd9d448d1ca3ca7afa8989d033532c11050f5e129d267be8de9c1b4 Deleted:sha256:7db5fb90eb6ffb6b5418f76dde5f685601fad200a8f4698432ebf8ba80757576 Deleted:sha256:19a7e879151723856fb640449481c65c55fc9e186405dd74ae6919f88eccce75 Deleted:sha256:c357a3f74f16f61c2cc78dbb0ae1ff8c8f4fa79be9388db38a87c7d8010b2fe4 Deleted:sha256:a7e1c363defb1f80633f3688e945754fc4c8f1543f07114befb5e0175d569f4c
5-3、清理镜像
语法:docker image prune命令
支持选项包括:
·-a,-all:删除所有无用镜像,不光是临时镜像;
·-filter filter:只清理符合给定过滤器的镜像;
·-f,-force:强制删除镜像,而不进行提示确认。
例如:如下命令会自动清理临时的遗留镜像文件层,最后会提示释放的存储空间
docker image prune -f …… Total reclaimed space:1.4 GB