Docker私有仓库管理

前一篇文章说了怎样搭建私有仓库,但是在仓库搭建好了之后发现维护仓库里的镜像还是不太方便,docker 官方也没有很好命令行接口来使用,只是提供了API,可以通过调用这些API来查看和删除镜像,但是这些API实在是不好用,所以找了一下发现有个开源的python工具可以实现这些功能。

安装

首先从下面的网站下载最新的 python 脚本,这里只要下载 registry.py 文件就可以了。

安装依赖的第三方包

$ sudo pip install requests

配置

要使 Docker 仓库的镜像可以被删除,需要修改一下仓库的配置文件,在CentOS7上配置文件路径是:/etc/docker-distribution/registry/config.yml。在文件中需要添加

storage:
    ...
    delete:
        enabled: true

修改后文件类似:

$ cat /etc/docker-distribution/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /var/lib/registry
    delete:
        enabled: true
http:
    addr: :5000

修改完成后需要重新启动仓库服务。

$ sudo systemctl restart docker-distribution.service

使用

首先查看一下仓库里有哪些镜像

$ python registry.py -r http://localhost:5000

为了测试需要,我们先创建几个镜像

$ sudo docker pull busybox

$ sudo docker tag busybox:latest localhost:5000/kongxx/busybox:v1
$ sudo docker push localhost:5000/kongxx/busybox:v1

$ sudo docker tag busybox:latest localhost:5000/kongxx/busybox:v2
$ sudo docker push localhost:5000/kongxx/busybox:v2

$ sudo docker tag busybox:latest localhost:5000/kongxx/busybox:v3
$ sudo docker push localhost:5000/kongxx/busybox:v3

再次查看一下仓库里的镜像

$ python registry.py -r http://localhost:5000
---------------------------------
Image: kongxx/mybusybox
  tag: v1
  tag: v2
  tag: v3
---------------------------------
Image: ...

可以发现已经有一个镜像的三个tag存在了。下面我们删除一下镜像的tag

# 删除镜像tag,但是默认会保留10个
$ python registry.py -r http://localhost:5000 -i kongxx/busybox -d 

# 删除镜像的所有tag
$ python registry.py -r http://localhost:5000 -i kongxx/busybox --delete-all

# 删除镜像tag,保留1个
$ python registry.py -r http://localhost:5000 -i kongxx/busybox -d --num 1

删除所有镜像tag后,我们查看一下,虽然镜像已经不包括任何tag了,但是镜像仍然存在

$ python registry.py -r http://localhost:5000
---------------------------------
Image: kongxx/busybox
  no tags!

此时要想彻底删除镜像,可以先删除下面目录下的镜像目录,这个目录在 /etc/docker-distribution/registry/config.yml 文件中有定义

/var/lib/registry/docker/registry/v2/repositories/<image>

然后运行 Docker 仓库的命令 garbage-collect 命令来清理一下。

$ sudo registry garbage-collect /etc/docker-distribution/registry/config.yml

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Debian社区

Google 开源 Docker 镜像差异分析工具 container-diff

Google 发布了一个名为 container-diff 的开源项目,这是一个分析和比较容器镜像的工具,可用来分析 Docker 镜像之间的差异。

8510
来自专栏张戈的专栏

Docker新手入门实战教程

摘 要 本文从新手视角记录了一个实际的Dokcer应用场景从创建、上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法。通过Docker快速拉起一个...

1.4K80
来自专栏编程坑太多

跟我一起学docker(五)--仓库

19140
来自专栏云原生架构实践

Docker Compose 安装 on centos7

github地址:https://github.com/docker/compose/releases。这里下载1.22.0版本。

23220
来自专栏kevin-blog

解决docker容器启动不了的问题

今天在学习docker的时候遇到个问题,在通过镜像创建容器的过程中,使用命令:docker run --name docker-test -d learn/pi...

2.6K10
来自专栏有困难要上,没有困难创造困难也要上!

Docker 远程管理

34070
来自专栏老司机的技术博客

docker实战(7)使用docker快速搭建gitlab私服

下载镜像 docker pull gitlab/gitlab-ce 使用镜像 镜像中有三个目录用于保存gitlab的数据,出于安全考虑,应该使宿主机目录挂载这三...

320100
来自专栏holer

如何从公网访问内网IIS

在holer官网上申请专属的holer access key或者使用开源社区上公开的access key信息。

19510
来自专栏雨过天晴

原 基于Docker搭建Gitlab

51310
来自专栏Debian社区

Docker v1.13.0 正式版发布

Docker v1.13.0 正式版发布了。需要注意的是,在 Docker 1.13 中,与在 Docker 1.12 中引入的实验版本相比,管理插件 api ...

21640

扫码关注云+社区

领取腾讯云代金券