5118站长平台,某网站网站的设计与实现,南宁企业建站系统,网页的分类随着我们拉取的镜像越来越多#xff0c;镜像的管理越来越难。这时候可能就需要删除镜像了。
本关的任务是学习如何删除容器#xff0c;要求学习者参照示例#xff0c;将busybox:latest镜像删除。
相关知识
删除镜像
如果要删除本地的镜像#xff0c;可以使用 docker rm…随着我们拉取的镜像越来越多镜像的管理越来越难。这时候可能就需要删除镜像了。
本关的任务是学习如何删除容器要求学习者参照示例将busybox:latest镜像删除。
相关知识
删除镜像
如果要删除本地的镜像可以使用 docker rmi 注意rm为删除容器而rmi为删除镜像其中i代表image命令它的具体语法如下
docker rmi [OPTIONS] IMAGE [IMAGE...]
其中
docker rmiDocker删除镜像的命令关键词OPTIIONS: 命令选项-f强制删除镜像IMAGE需要删除的镜像。这里的镜像可以用“镜像短ID”、“镜像长ID”、“镜像名”、“镜像的digest”来标识。
使用docker images --digests查看镜像的具体信息包括镜像的digest如下图所示 [rootlocalhost Desktop]# docker images --digests ubuntu
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
ubuntu latest sha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f 14f60031763d 2 weeks ago 120 MB
删除ubuntu:latest镜像有以下几种方法
镜像短IDdocker rmi 14f6这个代表镜像id以14f6开头的镜像一般而言前四位可以唯一标志如果不可以docker会提示的镜像长IDdocker rmi 14f60031763d镜像名 docker rmi ubuntu:latest镜像的digestdocker rmi ubuntusha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f。
以上的方法都能删除掉ubuntu:v1镜像。但日常生活中我们比较常用的是短ID以及镜像名因为用起来最方便。
删除多个镜像
我们可以使用 docker images -q来配合使用docker rmi这样可以成批的删除希望删除的镜像。
docker images -q redis会输出所有仓库名为redis的镜像id所以如果想要删除所有仓库名为redis的镜像可以这么写 docker rmi $(docker images –q redis)
如果想要删除所有镜像可以这么写 docker rmi $(docker images –qa)
如果想要使用docker rmi删除一个镜像需要注意需要先将使用该镜像的容器删除掉否则该镜像不能删除成功。当然也可以使用docker rmi -f强制删除该镜像
扩展阅读帮助理解镜像的存储机制
首先拉取一个ubuntu镜像到本地开始时本地没有任何镜像的。 [rootlocalhost Desktop]# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
e0a742c2abfd: Pull complete
486cb8339a27: Pull complete
dc6f0d824617: Pull complete
4f7a5649a30e: Pull complete
672363445ad2: Pull complete
Digest: sha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f
Status: Downloaded newer image for ubuntu:latest
[rootlocalhost Desktop]#
然后基于ubuntu:latest创建一个镜像ubuntu:v1.0(Dockerfile看不懂没关系你只需要该镜像是基于ubuntu镜像而且构建了三层即可了)。# [rootlocalhost Desktop]# docker build -t ubuntu:v1.0 .
Sending build context to Docker daemon 2.048 kB
Step 1/2 : FROM ubuntu
--- 14760031763d
Step 2/2 : RUN touch 1.txt
--- f3caf7be8365
Removing intermediate container 8b1ddd72ce60
Successfully build f3caf7be8365
删除ubuntu镜像发现只输出了Untagged。 [rootlocalhost Desktop]# docker rmi ubuntu
Untagged: ubuntu:latest
Untagged: ubuntusha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f
删除ubuntu:v1.0除了Untagged信息外还有Deleted信息。
Untagged: ubuntu:v1.0
Deleted: sha256:f3caf7be8365d8565ccd
Deleted: sha256:ccb3e410a39a587a2221
Deleted: sha256:14760031763da664d5d6
Deleted: sha256:e48d2779c8c8c3200fac
Deleted: sha256:4c66a8c9cd74cd55b98b
Deleted: sha256:55cb055d70722e6f41bc
Deleted: sha256:28a900eeeb199b0ebc40
Deleted: sha256:e5d2f035d714888cfe23
因此当我们使用上面命令删除镜像的时候实际上是在要求删除某个标签的镜像。所以删除镜像标签的信息这就是我们看到的Untagged 的信息。 而Deleted信息是删除镜像层后输出的信息。
因为我们的ubuntu镜像对应了2个标签因此当我们删除latest标签后还有v1.0指向了这个镜像而如果还有其他标签指向镜像层的话那些镜像层是不会被删除的所以docker rmi ubuntu只输出了Untagged信息。
当该镜像所有的标签都被取消了该镜像很可能会失去了存在的意义因此会触发删除行为。当执行docker rmi ubuntu:v1.0,首先将该镜像标签删除掉所以先输出Untagged信息。因为所有标签都被取消了所以会触发删除行为也就是Deleted信息将ubuntu:v1.0使用的所有镜像层都删除掉了。实际上从输出信息看创建ubuntu:v1.0的时候只构建了三层而删除ubuntu:v1.0时删除了八层其他的五层就是ubuntu:latest构建时创建的层。
#!/bin/bash
#以busybox:latest为基础镜像创建一个容器容器名为container3
docker run --name container3 busybox echo hello
#然后将busybox:latest镜像删除
#********** Begin *********#
docker rmi busybox:latest
#********** End **********#