Docker学习之镜像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker学习之镜像相关的知识,希望对你有一定的参考价值。
Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。
获取镜像
# docker pull ubuntu:16.04
运行 # docker run -it ubuntu:16.04 bash
-i 交互式操作 -t 建立终端 bash 进入交互式shell
[email protected]:/# id uid=0(root) gid=0(root) groups=0(root) [email protected]:/# cat /etc/os-release NAME="Ubuntu" VERSION="16.04.4 LTS (Xenial Xerus)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 16.04.4 LTS" VERSION_ID="16.04" HOME_URL="http://www.ubuntu.com/" SUPPORT_URL="http://help.ubuntu.com/" BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
镜像体积,image ls 列出来的大小是下载本地展开的大小,和docker hub不同。
查看镜像,容器,数据卷占用的实际空间
# docker system df
虚悬镜像
仓库名、标签均为 <none> 的镜像。这类无标签镜像也被称为 虚悬镜像(dangling image)
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> d92ac4d9c31e 24 hours ago 151MB
使用下面命令专门显示虚悬镜像
# docker image ls -f dangling=true
删除虚悬镜像
# docker image prune
中间层镜像
这些无标签镜像不应该删除,否则会导致上层镜像因为依赖丢失而出错。实际上,这些镜像也没必要删除,相同的层只会存一遍,而这些镜像是别的镜像的依赖。只要删除那些依赖它们的镜像后,这些依赖的中间层镜像也会被连带删除。
# docker image ls -a
列出部分镜像
docker image ls ubuntu #根据仓库名列出
docker image ls ubuntu:16.04 #列出特定某个镜像,指定仓库名和标签
# docker image ls -f since=nginx # -f --filter 过滤器参数 查看nginx之后建立的image
# docker image ls -f before=nginx #查看nginx之前建立的image
以特定格式显示
docker image ls -q #只列出image ID
使用Go模板语法,筛选列
# docker image ls --format "{{.ID}}: {{.Repository}}" #列出镜像ID和仓库名
fe0f24bc6366: friendhello
46c7cc28562c: nginx-fun
46ba956c5967: python
ae513a47849c: nginx
0b1edfbffd27: ubuntu
# docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}" #表格等距显示,自定义显示列及位置;
删除本地镜像
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
friendhello latest fe0f24bc6366 3 days ago 151MB
python 2.7-slim 46ba956c5967 8 days ago 140MB
nginx latest ae513a47849c 13 days ago 109MB
ubuntu 16.04 0b1edfbffd27 2 weeks ago 113MB
用ID 镜像名 摘要删除镜像
docker image rm ae5 #镜像ID前3个字符即可
docker image rm nginx #<仓库名>:<标签>
docker image rm [email protected]摘要
# docker image ls --digests #显示摘要
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
nginx latest sha256:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884 ae513a47849c 13 days ago 109MB
# docker image rm [email protected]:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884
Untagged: [email protected]:0fb320e2a1b1620b4905facb3447e3d84ad36da0b2c8aa8fe3a5a81d1187b884
docker image ls配合删除镜像
# docker image rm $(docker image ls -q redis) #删除所有仓库名为redis的镜像
# docker image rm $(docker image ls -q -f before=nginx) #删除所有nginx之前的镜像
以上是关于Docker学习之镜像的主要内容,如果未能解决你的问题,请参考以下文章