一、前言

前一篇我们介绍了《Docker 私有仓库搭建》,但是搭建完的私有仓库没有 UI 管理界面,操作很不方便。我们可以借助第三方 registry-web 镜像来实现界面化管理,目前比较流行的镜像包是 hyper/docker-registry-web

二、快速搭建

通过两条 docker run 指令快速搭建:

docker run -d -p 5000:5000 --name registry-srv registry:2
docker run -it -p 8080:8080 --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web 

我们将私有仓库的容器命名为 registry-srv,将 WebUI 管理容器命名为 registry-web,第2条指令的 --link 参数让 registry-srv 和 registry-web 做连接,这样我们在 registry-web 内部就可以通过 registry-srv:5000 地址来访问私有仓库了。

我们 push 几个镜像到私有仓库,在浏览器中打开 http://localhost:8080/,展示如下:

三、开启删除功能

默认的,这样搭建的管理界面没有登录功能,也不支持镜像删除。

如果要支持删除功能,请按以下步骤操作:

  1. 进入 registry-srv 容器,编辑 /etc/docker/registry/config.yml 文件,添加 delete 支持:

     
  2. 进入 registry-web 容器,编辑 /conf/config.yml 文件,将 readonly 设为 false:

     
  3. 重启 registry-srv 和 registry-web 容器,刷新管理页面,这时候就可以看到删除按钮了:

在实际应用中,我们应该将配置文件和数据目录从容器里分离出来,使用 volume 挂载到容器中,避免删除容器后数据丢失。

四、容器编排

使用 docker-compose 进行容器编排,可以大大提高我们的工作效率。

docker-registry-web 官方项目提供了3个方案示例

  • 方案1:无身份认证 - 匿名访问
  • 方案2:启用身份认证
  • 方案3:启用身份认证 - Nginx代理

本人经过实验,发现原文有些许纰漏,已做修改,最新 docker-compose 代码见:https://gitee.com/yangrz/docker-registry-web