一、获取镜像
语法:
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 8746661ca3c2f215da94e6d3f7dfdcafaff5ec0b21c9aff6af3dc379a82fbc72
json格式返回 (注意 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