docker完全卸载重装,docker容器和镜像的删除命令,docker镜像完全卸载的操作步骤

docker完全卸载重装,docker容器和镜像的删除命令,docker镜像完全卸载的操作步骤

这篇文章主要介绍了码头工人镜像完全卸载的操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

1.docker ps -a查看运行的镜像进程

[root@mylinux~]# docker ps -a

容器身份证明映像命令创建的状态端口名称

98 ACB 9 dcb 2 a2 redis:5 ' docker-入口点。s…' 8分钟前上升8分钟0.0.0.0:6379-6379/tcp redis

1 B1 ff 7 f 08583 MySQL:5.7 ' docker-入口点。s…' 8分钟前涨8分钟0.0.0.0:3306-3306/tcp,33060/tcp mysql

035129 f60 a64 mongo:3.6 ' docker-入门点。s…' 8分钟前涨8分钟0.0.0.0:27017-27017/tcp mongo

2.docker stop CONTAINER ID例如要删除mysql镜像,停止该镜像进程

停靠站035129f60a64

3.docker rm CONTAINER ID卸载镜像

文件编号rm 035129f60a64

4.docker images 查看当前docker的镜像IMAGE ID

[root@mylinux ~]# docker图片

存储库标记图像身份证明创建的大小

redis 5 a4fe14ff1981 25小时前95MB

mysql 5.7 7faa3c53e6d6 29小时前373MB

mongo 3.6 0f29e46dab41两天前432MB

5.docker rmi IMAGE ID 删除镜像

[root @我的Linux ~]# docker RMI 7 FAA 3c 53 e6d 6

未标记:mysql:5.7

未标记:MySQL @ sha 256:204 F5 c 77 Fe 589 c 202 e 2 ebc 8 b 6 b 7 DC 442d 67 c 07168916 a 302 ede 26 B3 e 9 ab 168

已删除:sha 256:7 FAA 3c 53 e 6d 699 Fe 92d 49 a 361 e 427 C3 af 937 c 6 CEA 9517 f 092 e 8013 B1 ff f1 C4 d 9

已删除:沙256:巴达5 edfe 9 c 6 f 4637 D3 ef 1 f 4797561867 be 56282 a 750 c 0 f1 d 4 a 83 c 227 BC 7 a 153

已删除:sha 256:CB 6436 ACC 7 f 930 ab 22d 387016 b 2296 E6 c 191 fc 4 ebbb 1611 f 84 E3 e 15073588 fc 7

已删除:sha 256:1716d 22 CD 68158 fa 78 c 60 cf 78 d8e 25457 FB 384 de 45 de 7775 ab F3 a 31502 b 6 f 00e

已删除:sha 256:daeb 1195813697 ab 0182 EB 75 de 7 f 5a 0 f 5 bbfc 4 f 8 EB 91 be 9 f 844777841 e 759984

已删除:sha 256:64 FFA 0 cc Fe 7 f 5 ECB 4 FB 721913499 a 8 E0 B1 af 9897 b 69 a 0 dbec 0922 f 5b 70666 e 76

已删除:sha 256:3b 3af 32 BD 87 b 74 f 389198 eab 8514d 9 f 32 F3 e 513 DAE 313748 b 165333 b 286 BD 171

已删除:sha 256:c 75 ab 456 a 585 af 40 ca 2 EC 8488164230 deb 81 a 1739d 868604 CB 6661 c 24 e 37 b 5

已删除:sha 256:50 a 75 EB 6a 0b 2254 Fe 5d 96 f 999 cc 2087 e 72d 515 c 93509 a 816 bbd 9 FB 707 a3 B1 b 0

已删除:sha 256:1ae 6616333 a 66450738 a 72 a 75 c 03 BDF 0236 e 0425 ba 0336 a 5c DBE 470 ab 6 F4 a3 e

已删除:sha 256:68e 318 BD 9263 aedd 19d 9d 73 b 051 a 262 fa 57 e 2 a 16 f 9 c 81 c8 b 39163601020 CD 405

已删除:sha 256:6270 ADB 5794 c 6987109 e 54 af 00 ab 456977 C5 D5 cc 6 f1 BC 52 C1 ce 58d 32 EC 0 f 15 f 4

补充:Docker彻底删除私有库镜像

首先看看网上一般的做法

私有库默认是不支持删除镜像的,需要修改config.yml配置文件,在储存;储备节点下加入删除:启用:真,然后重启私有库。

码头工人提供的镜像删除美国石油学会(美国石油协会)为:

删除ip:端口/v2/存储库/清单/引用

仓库为镜像的仓库

参考为镜像推成功后生成的文摘:sha256值

获取 digest :

curl-header '接受:应用程序/vnd。码头工人。分销。显化。v2 JSON '-I-XGET私有库ip:端口号/v2/镜像存储库/清单/镜像标签

注意:

-header ' Accept:application/vnd。码头工人。分销。显化。' v2 JSON '这个页眉是必须要加的,不加的话内容类型是第五颅神经的眼支漂亮jws,获取的摘要是错误的!

例:curl-header '接受:应用程序/vnd。码头工人。分销。显化。v2 JSON '-I-XGET 192。168 .120 .107:5000/v2/我的注册表/清单/1.0

删除镜像:

例:curl-I-X删除http://192。168 .120 .107:5000/v2/my-repository/manifests/sha 256:4d 523 ADB 3c 653 Bab 7 DFD 0326081860 B3 CBA 24 DC 393 f 69d 6731 DAA 513 c 435 ec0c

删除后我们查看下私有库

卷曲192。168 .120 .107:5000/v2/my-repository/tags/list

就会发现刚删除的那个标签不见了。但是如果在执行命令的前后车库内私有库镜像存储目录的文件大小,会发现并没有多大的变化

显然数据并没有被真的删除,我们还需要运行码头工人提供的垃圾回收命令。

垃圾回收

我们需要登录私有库所在的服务器,然后执行命令:

docker exec -it私有库的容器身份证明或者容器名sh -c '注册表垃圾收集/etc/docker/registry/config。yml '

当然,也可以进入到私有库的容器中,再执行:

docker exec -it私有库的容器身份证明或者容器名嘘

注册表垃圾收集/etc/docker/registry/config。yml

这种方法特别麻烦。您只能删除标签,而不能删除存储库。删除后,blobs目录中会留下许多空文件夹。而且,如果一个存储库中有多个标签,并且这些标签的数据是相同的,那么删除一个标签就会同时删除所有标签。

虽然网上有删除私库镜像的python脚本,但我觉得并不好用。

我不会满足于此,所以自己写了一个sh脚本,先看看效果吧。

脚本中有一些人性化的提示,sh脚本易于理解和扩展。我也把剧本上传到了gitHub。有兴趣的可以下载试试。

GitHub地址:https://github.com/hushuai86/docker-delete

下载运行:

#首先将脚本下载到/usr/local/bin/目录

curl https://raw . githubusercontent . com/Hu Shuai 86/docker-delete/master/docker-delete-2.0 . sh | sudo tee/usr/local/bin/docker-delete/dev/null

#授予可执行权限

chmod a x/usr/local/bin/docker-delete

#专用库镜像存储目录路径的全局环境变量(该路径是在运行专用库容器时使用-v命令将专用库容器中的/var/lib/registry目录挂载到本地计算机的路径)

# Example: /opt/data/registry是我运行容器时本地挂载私有库的镜像存储目录的目录。

echo ' export DOCKER _ REGISTRY _ DIR=/opt/data/REGISTRY '/etc/profile

#运行专用库容器ID全局环境变量设置(运行专用库容器的ID)

#示例:89b9b3c9054ay是我的私有库容器的id

echo ' export DOCKER _ REGISTRY _ CONTAINER _ ID=89 B9 B3 c 9054 a '/etc/profile

#使配置有效

来源/etc/配置文件

然后可以使用docker-delete命令。如果觉得剧本不舒服,可以自己编辑剧本修改。

原理解析:

(在下面的截图中,/opt/data/registry是我运行容器时本地挂载私有库映像存储目录的目录)

在专用库镜像存储目录下有两个文件夹blobs和repositories。

其中,存储库目录下有几个以镜像存储库命名的文件。

也就是说,如果你想知道哪些镜像在私有库中,只要看看这个文件夹里有哪些子文件夹就可以了。

您可以在每个镜像存储库文件夹/_ manifest/tags目录下看到该镜像有哪些标记。

但是,镜像的真实数据不在repositories目录中,而是以数据块的形式存储在blobs目录中。一个映像被划分成多个数据块,即执行垃圾收集命令时输出的“标记blob …”关系,映像和数据块之间的关系在repositories/images中。

存储库/_ manifests/revisions/Sha256/目录中的sha 256值。

目录下有一个以sha256值命名的链接文件,内容就是sha256值。

经过测试,我发现只要删除这个链接文件,然后在私有库容器中执行垃圾收集命令' registry garbage-collect/etc/docker/registry/config . yml ',那么这个sha256值关联的blobs就会被完全删除。

但是,一个镜像可能有很多标签,那么与这个sha256值相关联的blobs数据属于哪个标签呢?

当我们进入镜像的某个tag/index/sha256/目录时,我们会发现一个以sha256 value命名的文件夹,这个sha256 value存在于之前的修订版/sha256/下。该文件夹下还有一个链接文件,其中保存了sha256值。

所以按照我的理解,当我们调用docker提供的API删除一个标签的时候,我们会得到这个镜像的标签/索引/sha256/sha256值/链接文件中的sha256值,然后看看是否还有其他标签与这个sha256值相关联。如果是这样,就删除这个标签文件夹。如果没有,那么在删除这个标签的文件时,revisions/sha256/目录下对应sha256的链接文件也会被删除。在这种情况下,当在容器中执行垃圾收集命令时,与该sha256值相关联的blobs数据将被完全删除。

特别注意:

完全删除图像数据后,您需要重新启动私有库容器。如果你不重启它,当你把图像推送到私有库时,你将总是输出已经存在的层,这似乎是被推上去的。但是,如果您删除本地映像,然后再提取它,将会报告一个错误。当然,我写的剧本里有这一步。

以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。如有错误或不足之处,请不吝赐教。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • docker常用命令详解,docker常用命令大全简书
  • docker常用命令详解,docker常用命令大全简书,docker常用命令总结(推荐)
  • docker容器的概念,docker原理详解
  • docker容器的概念,docker原理详解,docker容器的原理分析
  • docker容器和镜像的删除命令,docker怎么删除镜像文件
  • docker容器和镜像的删除命令,docker怎么删除镜像文件,Docker 删除及清理镜像的方法
  • docker完全卸载重装,docker容器和镜像的删除命令
  • docker安装菜鸟教程,docker中安装docker
  • docker安装菜鸟教程,docker中安装docker,快速安装Docker详细步骤教程
  • docker安装使用,docker中安装docker
  • docker安装使用,docker中安装docker,Docker入门安装教程(小白篇)
  • docker 镜像库,常用docker镜像仓库
  • docker 镜像库,常用docker镜像仓库,Docker容器实战之镜像仓库
  • docker 容器部署,docker中安装docker
  • docker 容器部署,docker中安装docker,docker容器安装及部署的超详细入门教程
  • 留言与评论(共有 条评论)
       
    验证码: