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 条评论
登录 后参与评论

相关文章

  • Docker搭建私有镜像仓库

    kongxx
  • Mac挂载NTFS移动硬盘进行读写操作

    在Mac上,默认情况对NTFS磁盘的挂载方式是只读(read-only)的,其实Mac原生是支持NTFS的,但是后来由于微软的限制,苹果把这个功能给屏蔽了,但是...

    kongxx
  • Cordova 打包错误 ERROR: In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVari

    kongxx
  • 4. 镜像的原理

      镜像是一种轻量级, 可执行的独立软件包, 用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需的所有内容, 包括代码, 运行时, 库, 环...

    用户7798898
  • dock基本使用

    要安装最新的 Docker 版本,首先需要安装 apt-transport-https 支持,之后通过添加源来安装。要安装最新的 Docker 版本,首先需要安...

    yoyofx
  • docker容器技术系列三:docker镜像

    本系列教程由旺旺知识库授权进行发布 前面基本概念部分我们已经介绍了docker镜像就是一个只读模板,可以从镜像启动一个容器实例。我们也发现,在启动容器的过程中...

    小小科
  • 实战 | ​Docker ubuntu:18.04 镜像制作

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可...

    3D视觉工坊
  • 如何搭建及使用 docker registry

    本文通过 Docker Compose 搭建了一个简单的 registry 环境,使用的是 docker hub官方镜像,registry 镜像版本 regis...

    腾讯云容器服务团队
  • 容器Docker学习系列三~每天几个小命令

    今天继续学习我们的Docker命令,在简单的了解命令后我们会开始实战操作执行Docker容器,应用起来我们的命令。今天继续学习六大部门Docker命令中的本地镜...

    用户2196435
  • 这就是你日日夜夜想要的docker!!!---------Docker镜像制作与私有仓库建立

    Docker 镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引 导系统,即 bootfs,这很像典型的 Linux/Unix 的引导文件系统...

    不吃小白菜

扫码关注云+社区

领取腾讯云代金券