问题描述

对于私有仓库的镜像,Docker是没有命令对其进行删除的

解决办法

进入私有仓库的容器内,找到镜像文件,然后手动删除即可

删除过程

进入容器

先运行对应私有仓库的容器,然后进入容器

1
docker exec -it 私有仓库容器id sh

修改配置文件

该配置文件在 /etc/docker/registry 目录下,名称为:config.yml ,在storage节点添加以下代码:

1
2
delete:
enabled: true

完整config.yml代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3

找到镜像文件

1
find / -name "*要删除镜像名称*"

删除

进入上一步找到的镜像文件的路径,然后开始删除,该镜像文件是文件夹所以删除时追加参数-r

1
rm -r 镜像名称

同步配置文件

1
registry garbage-collect /etc/docker/registry/config.yml

查看结果

浏览器地址栏输入:http://虚拟机id:5000/v2/_catalog,可以看到对应的镜像已经没了