千家信息网

怎么在Docker中删除私有仓库管理和本地仓库中的镜像

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关怎么在Docker中删除私有仓库管理和本地仓库中的镜像,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一:Docker私有仓
千家信息网最后更新 2025年12月02日怎么在Docker中删除私有仓库管理和本地仓库中的镜像

这篇文章将为大家详细讲解有关怎么在Docker中删除私有仓库管理和本地仓库中的镜像,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一:Docker私有仓库安装

1、 下载镜像是有镜像仓库:

[root@localhost ~]# systemctl start docker#如果已经有镜像了,强制删除原来的镜像的方式如下:[root@xxx-pub /]# docker rmi -f docker.io/registryUntagged: docker.io/registry:latestUntagged: docker.io/registry@sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8[root@xxx-pub /]##开始下载最新的镜像。[root@localhost ~]# docker pull registryUsing default tag: latestlatest: Pulling from library/registry4064ffdc82fe: Pull complete c12c92d1c5a2: Pull complete 4fbc9b6835cc: Pull complete 765973b0f65f: Pull complete 3968771a7c3a: Pull complete Digest: sha256:20bbbc0f6384cf7dc6e292ccbe75935b73c92ec776543c970904bc60feceb129Status: Downloaded newer image for registry:latest[root@localhost ~]#

2、 启动并且挂载镜像仓库到本地磁盘:

[root@xxx-pub /]# docker run -d -v /registry:/home/docker-registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latestUnable to find image 'registry:latest' locallyTrying to pull repository docker.io/library/registry ... latest: Pulling from docker.io/library/registryDigest: sha256:51bb55f23ef7e25ac9b8313b139a8dd45baa832943c8ad8f7da2ddad6355b3c8Status: Downloaded newer image for docker.io/registry:latestb7bd2b14ed488936afe798be95f3cd56f604fb092d45cf6f4a58359bcad0d34c[root@xxx-pub /]#
  • -v /registry:/home/docker-registry:默认情况下,会将仓库存放于容器内的/home/docker-registry目录下,指定本地目录挂载到容器。

  • -p 5000:5000 :端口映射。即本地5000端口,映射到registry中的5000端口。

  • -restart=always1:在容器退出时总是重启容器,主要应用在生产环境。

  • -privileged=true:在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报类似权限错误。OSError: [Errno 13] Permission denied: '/tmp/registry/repositories/liibrary')或者(Received unexpected HTTP status: 500 Internal Server Error)

  • -name registry:指定容器的名称。

为了持久化数据,将volume挂载到/home/docker-registry

3、 我们给一个本地镜像打个标签然后上传:

查看本地有哪些镜像:

[root@xxx-pub /]# docker imagesREPOSITORY      TAG         IMAGE ID      CREATED       SIZEdocker.io/centos   centos7.5.1804   fdf13fa91c6e    4 weeks ago     200 MBdocker.io/registry  latest       b2b03e9146e1    2 months ago    33.3 MB[root@xxx-pub /]#

以docker.io/centos为案例。

[root@xxx-pub /]# docker tag fdf13fa91c6e localhost:5000/xxx-centos7.5.1804:1.0##localhost:5000表示仓库地址,fdf13fa91c6e表示images id,xxx-centos7.5.1804表示镜像名称,1.0表示版本号。或:[root@xxx-pub /]# docker tag docker.io/centos:centos7.5.1804 localhost:5000/xxx-centos7.5.1804:1.0

4、 直接上传:

[root@xxx-pub /]# docker push localhost:5000/xxx-centos7.5.1804:1.0The push refers to a repository [localhost:5000/xxx-centos7.5.1804]bcc97fbfc9e1: Pushed 1.0: digest: sha256:7c14180942615fef85cb5c8b1388e028be1a8f79694a5fa30a4025173e42ad61 size: 529[root@xxx-pub /]#

在PUSH的过程中可能报类似如下的错误(以下是网络上的错误提示):

[root@localhost ~]# docker push 192.168.174.128:5000/hello:latestThe push refers to a repository [192.168.174.128:5000/hello]unable to ping registry endpoint https://192.168.174.128:5000/v0/v2 ping attempt failed with error: Get https://192.168.174.128:5000/v2/: http: server gave HTTP response to HTTPS client v1 ping attempt failed with error: Get https://192.168.174.128:5000/v1/_ping: http: server gave HTTP response to HTTPS client[root@localhost ~]#

解决办法:

使用的是https,修改/etc/sysconfig/docker(这里是Centos7下的docker)文件,加上ADD_REGISTRY='-add-registry 192.168.18.162:5000',INSECURE_REGISTRY='-insecure-registry 192.168.18.162:5000' (上面是历史的docker版本的配置),如下图:

但是在新的docker容器仓库的配置中,自己的docker容器中的配置采用(这里在docker registry和另外pull镜像的机器上都指定如下的配置):

指定完成之后,要重启docker,重启的配置如下:

[root@youx-pub volumes]# systemctl restart docker

另外:查看一下docker.service,查看一下配置文件:

[root@youx-pub registry]find / -name docker.service/sys/fs/cgroup/memory/system.slice/docker.service/sys/fs/cgroup/devices/system.slice/docker.service/sys/fs/cgroup/blkio/system.slice/docker.service/sys/fs/cgroup/cpu,cpuacct/system.slice/docker.service/sys/fs/cgroup/pids/system.slice/docker.service/sys/fs/cgroup/systemd/system.slice/docker.service/usr/lib/systemd/system/docker.service[root@youx-pub registry]# vim /usr/lib/systemd/system/docker.service


然后执行一下:

#因为可以用于systemctl启动的docker.service文件变化了,所以得执行以下配置。然后执行docker的重启工作systemctl daemon-reloadsystemctl restart docker

如果还是报如下错误:

[root@youx-pub registry]# docker push 192.168.18.162:5000/nginx:1.2The push refers to a repository [192.168.18.162:5000/nginx]Get https://192.168.18.162:5000/v1/_ping: http: server gave HTTP response to HTTPS client[root@youx-pub registry]#

解决办法是:

在/etc/docker下创建daemon.json,内容是:

{"insecure-registries":["192.168.18.162:5000"]}

然后再重启docker容器:

[root@youx-pub volumes]# systemctl restart docker

5、 上传完成,我们可以查看一下挂载目录是否有镜像:

[root@xxx-pub docker-registry]# pwd/home/docker-registry[root@xxx-pub docker-registry] # ls /registry/Docker

6、 关于本地镜像的查看:

[root@xxx-pub docker-registry]# curl http://192.168.18.162:5000/v2/_catalog{"repositories":["xxx-centos7.5.1804","xxx-centos7.5.1804-v1.0"]}[root@xxx-pub docker-registry]#

7、 看到有两个镜像,我们要获取他的标签信息以便下载呢:

[root@xxx-pub docker-registry]# curl http://192.168.18.162:5000/v2/xxx-centos7.5.1804/tags/list{"name":"xxx-centos7.5.1804","tags":["1.0"]}[root@xxx-pub docker-registry]#

8、 然后我们直接下载镜像(到另电脑上):

[root@bigdata2 ~]# docker pull 192.168.18.162:5000/youx-centos7.5.1804:1.0Using default tag: latestTrying to pull repository 192.168.18.162/youx-centos7.5.1804 ... Get https://192.168.18.162/v1/_ping: dial tcp 192.168.18.162:443: getsockopt: no route to host[root@bigdata2 ~]#

如果出现上面的情况,解决办法是:

编译:

[root@youx-pub volumes]# vim /etc/containers/registries.conf 这个文件。旧的是编辑:/etc/sysconfig/docker 这个文件


然后重启docker

[root@youx-pub volumes]# systemctl restart docker

然后发现可以pull了

#要注意的是,这里的地址是:仓库地址:仓库端口号/REPOSITORY:TAG[root@bigdata2 ~]# docker pull 192.168.18.162:5000/youx-centos7.5.1804:1.0

如果还不行,需要修改/etc/docker/daemon.json,内容如下:

[root@bigdata2 docker]# cat daemon.json {"insecure-registries":["192.168.18.162:5000"]}

二、从另外一台机器上上传镜像到docker镜像仓库:

[root@bigdata2 ~]# docker tag centos7-jdk8-nginx:1.0 192.168.18.162:5000/centos7-jdk8-nginx:1.0[root@bigdata2 ~]# docker imagesREPOSITORY                TAG         IMAGE ID      CREATED       SIZE192.168.18.162:5000/centos7-jdk8-nginx  1.0         bcacd65e2a2e    2 minutes ago    2.18 GB[root@bigdata2 ~]# docker push 192.168.18.162:5000/centos7-jdk8-nginx:1.0The push refers to a repository [192.168.18.162:5000/centos7-jdk8-nginx]f018e9c38a66: Pushed 2a47dcd341ef: Pushed c5dea3bc729a: Pushed bcc97fbfc9e1: Pushed 1.0: digest: sha256:d907ff2f8eb590209700c01ce85c78d0bc778a4238539d747e4667d68cb52102 size: 1163[root@bigdata2 ~]#

然后进入docker镜像仓库所在位置:

[root@youx-pub registry]# curl http://192.168.18.162:5000/v2/_catalog{"repositories":["centos7-jdk8-nginx","nginx"]}[root@youx-pub registry]# curl http://192.168.18.162:5000/v2/centos7-jdk8-nginx/tags/list{"name":"centos7-jdk8-nginx","tags":["1.0"]}[root@youx-pub registry]#

三、本地镜像如何删除,正常是不提供删除功能的,所以使用第三方的插件来进行删除

插件github上的位置:
https://github.com/burnettk/delete-docker-registry-image

1、下载资源

[root@master registry]# curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/nullsudo chmod a+x /usr/local/bin/delete_docker_registry_image

2、 设置相关环节变量:

查找REGISTRY_DATA_DIR,命令:[root@youx-pub registry]# find / -name registry[root@youx-pub registry]# find / -name registry/var/lib/docker/overlay2/d72320cd67b42f7ae66342cc6dedab7abe5e89106de8c4919ec8c5a6e5940b09/diff/var/lib/ucf/registry/var/lib/docker/overlay2/92211417089f7be8239def550e1e89ce3f0e50ac57f2c36ba723ca312ea06ae3/diff/bin/registry/var/lib/docker/overlay2/c1716aea0b380eb94ead9aa02552769acd4c3dac8e6dab735997f1709ce79a33/diff/etc/docker/registry/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/diff/var/lib/registry/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/merged/bin/registry/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/merged/etc/docker/registry/var/lib/docker/overlay2/46f719f01255c431b4343e78607341d6d66ea482bc6d03c3b4e05e7413f46be6/merged/var/lib/registry/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry/opt/data/registry/registry[root@youx-pub registry]#发现[root@youx-pub repositories]# pwd/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry/v2/repositories[root@youx-pub repositories]# lscentos7-jdk8-nginx nginx[root@youx-pub repositories]#所以设置镜像仓库的位置为:[root@master registry]# export REGISTRY_DATA_DIR=/var/lib/docker/volumes/1522d54c954c755250cb71686cacd9714cd3d0f0c706ec18c1e490c7881fe713/_data/docker/registry/v2

地址就是咱们挂载地址:

看一下相关标签:

[root@youx-pub registry]# curl http://192.168.18.162:5000/v2/_catalog{"repositories":["youx-centos7.5.1804","youx-centos7.5.1804-v1.0"]}[root@youx-pub registry]# curl http://192.168.18.162:5000/v2/youx-centos7.5.1804-v1.0/tags/list{"name":"youx-centos7.5.1804-v1.0","tags":["latest"]}[root@youx-pub registry]#

可以之后我们直接删除:

[root@master registry]# delete_docker_registry_image --image youx-centos7.5.1804-v1.0:latest

INFO [2017-04-08 11:39:39,793] Deleting /registry/docker/registry/v2/repositories/nginx/_manifests/tags/v1
咱们再看一下本地仓库的镜像有几个:

[root@master registry]# curl http://192.168.18.162:5000/v2/_catalog{"repositories":["youx-centos7.5.1804"]}

关于怎么在Docker中删除私有仓库管理和本地仓库中的镜像就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

镜像 仓库 容器 配置 地址 文件 内容 错误 私有 位置 办法 标签 目录 端口 管理 名称 情况 插件 文章 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 乡镇网络安全信息 plsql下导数据库 网络安全是国家计划课程吗 数据库文件的后缀名是dbf 泰安民主评议软件开发系统 长沙理工大学网络安全研究生咋样 小学生网络安全漫画简笔画 树莓派芯片做服务器 有关小学生网络安全手抄报 php访问数据库的方法 小学生网络安全教育官方网站 全国大学生辩论赛网络安全 电视显示无法解析服务器怎么解决 GPS时钟同步服务器 幼儿园网络安全宣传漫画图片 怎么做数据库课设的界面 深圳市梦天游网络技术 dal 层数据库连接代码 服务器安全狗导致网站503 学生信息数据库管理系统表的 全国城市房价数据库 服务器回收天津虚拟主机 网络安全设备管理规定 广东涌浪网络技术有限公司好吗 安卓源码下载连接数据库 天津智能医疗系统软件开发 天龙八部端游服务器合区情况 新时达服务器故障 地铁网络安全岗位笔试题目 奥运网络安全服务与杀毒软件
0