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学习之镜像的主要内容,如果未能解决你的问题,请参考以下文章

docker学习之——获取和推送镜像

Docker学习之五Docker自定义镜像示例

Docker学习之四Docker自定义容器镜像

Docker学习之三Docker查找拉取镜像启动容器容器使用

docker学习之--日常命令

Docker 学习之镜像导入导出及推送阿里云服务器