怎么删除docker-register镜像及没有无效镜像

  介绍

这篇文章主要介绍怎么删除docker-register镜像及没有无效镜像,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强>背景介绍

我们大家在服务器上搭建了码头工人注册表,所有的构建镜像都会集中在一个服务器上,久而久之硬盘就被塞满了。本文会着重介绍两种清理方式。一是& lt; none>标签的镜像,二是删除码头工人物理镜像,具体内容如下:

<强> docker镜像

<强>有效的镜没有像

为了理解& lt; none>镜像,我们先要理解码头工人镜像系统的工作机制,以及层是如何组织起来的。

当我拉取一个应激物镜像的时候,运行<代码>码头工人形象——命令,会发现我凭空多出来一个& lt;none>: & lt;none>镜像。

? docker  images  a   REPOSITORY , TAG ,, IMAGE  ID , CREATED 大小   stresser ,, latest , 68 ee9b96793e  9, days  ago  242 mb   & lt; none>,,, & lt; none>,, dbcff8952263  9, days  ago , 242 mb

当我要删除这个& lt;none>镜像的时候,执行下面的命令,会提示失败,我要删除应激物镜像才能顺带把& lt; none>镜像删除。

? docker  rmi  dbcff8952263   Error  response 得到守护进程:冲突:,unable 用delete  dbcff8952263  (cannot  be 强迫),安康;image  has  dependent  child 图像      ?,docker  rmi  68 ee9b96793e   未加标签的:应激物:最新   删除:sha256:68ee9b96793e0a3b3a77ec713f1bf4eb19446bd13fb933557dc401e452ca04c4   删除:sha256: dbcff895226371eba2640c178414f5828aa5e6f417978b63ffa490d3865dc79a   删除:sha256:875a0b6d28d1f52fc980a0948055d3ec3a38158ff7aa6a1a2c19c4243b96a57a      ?,docker  rmi  dbcff8952263   Error  response 得到守护进程:No  such 形象:,dbcff8952263:最新

& lt; none>: & lt; none>镜像是干嘛的?我们先看看码头工人文件系统的组成,码头工人镜像是由很多层组成的,每个层之间有父子关系,所有的码头工人文件系统层默认都存储在/var/lib/码头工人/图目录下,码头工人称之为图层数据库,在这个例子中应激物由两层(层)组成,我们可以在/var/lib/码头工人/图目录下找到层。

当我们<代码>拉应激物镜像的时候,最先下载的是dbcff8952263 & lt;none>父层,接下来才会下载stresser:latest,stresser由两层组成。 我们可以进入 cat/car/lib/docker/graph/${containerId}/json ,查看镜像的元数据来了解详细信息(下面样例是其他的容器信息)

{"id":"37dd4150474449629e8a7b576eed26cb8583d2fe5a3edf10fd84323dfd538678","parent":"5cf74bcb1bde2e2249824a682f45235954543a5d57081db22c96402342db49e9","created":"2017-04-06T16:28:35.51523979Z","container_config":{"Hostname":"","Domainname":"","User":"","Memory":0,"MemorySwap":0,"CpuShares":0,"Cpuset":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"PortSpecs":null,"ExposedPorts":null,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":null,"Cmd":["/bin/sh -c set -e; \u0009NGINX_GPGKEY=573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62; \u0009found=''; \u0009for server in \u0009\u0009ha.pool.sks-keyservers.net \u0009\u0009hkp://keyserver.ubuntu.com:80 \u0009\u0009hkp://p80.pool.sks-keyservers.net:80 \u0009\u0009pgp.mit.edu \u0009; do \u0009\u0009echo "Fetching GPG key $NGINX_GPGKEY from $server"; \u0009\u0009apt-key adv --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPGKEY" \u0026\u0026 found=yes \u0026\u0026 break; \u0009done; \u0009test -z "$found" \u0026\u0026 echo \u003e\u00262 "error: failed to fetch GPG key $NGINX_GPGKEY" \u0026\u0026 exit 1; \u0009exit 0"],"Image":"","Volumes":null,"WorkingDir":"","Entrypoint":null,"NetworkDisabled":false,"MacAddress":"","OnBuild":null,"Labels":null},"author":"NGINX Docker Maintainers "docker-maint@nginx.com"","Size":4901}

最后做一个总结::镜像是一种中间镜像,我们可以使用`docker images -a`来看到,他们不会造成硬盘空间占用的问题(因为这是镜像的父层,必须存在的),但是会给我们的判断带来迷惑。

无效的 none 镜像

另一种类型的 : & lt;none>镜像是晃来晃去的图像,这种类型会造成磁盘空间占用问题。

怎么删除docker-register镜像及没有无效镜像