Docker镜像仓库及Docker Registry UI部署

一、引言

        为了安全,我们常常需要将Docker镜像push到私有的仓库,但是Docker Registry不能直观的浏览管理镜像,非常不便利,给 Docker Registry 配置 Docker Registry UI这样的图形化操作工具可以显著提高 Docker Registry 的管理和使用效率。

        可是由于版本的更迭,在部署Docker Registry UI时踩坑踩的我头大如斗,功夫不负有心人,终于试出了能用的配置,下面我从踩的坑到最终配置和测试带大家简单看看。

二、雷区

(一)2.0.0以前,static版本已经弃用

        很多网上的教程都是教我们配置tag为static或2.0.0以前的版本,我第一次部署的为static版,页面右下角弹出了条json说分页参数=100000,打开过滤器也是不出意外的发现请求出错,显示不了我传进来的镜像。

         我试着改了这个请求参数n直接发起请求,有响应但都为空,我想可能不是我电脑的问题,这版本大概真被废弃了,于是我又看了页面顶部的提示,大概是说更新到2.0.0以上的版本或者用joxit/docker-registry-ui1.5-static,这时候我又做出了错误的选择(0.o),我决定贯彻初衷,用老东西,于是我又一次回到了这个页面。

        接下来我不打算相信这上面的提醒了,自己直接去拉取最新版,这又是一个错误的决定。

(二)配置文件参数与版本不对应,且无法跨域

        在我更换了最新版后,信心满满刷新,新的问题又来了😅😅😅


        这次再进入,提醒我们检查连接和注册表标头(与CORS“跨域资源共享”有关),一开始确实是摸不着头脑,没思路只能去看看日志

 服务是打开了,又检查了一下网络和端口也没什么问题,这下基本确定是哪里配置出问题了

        于是我开始按照各种非官方资料不停修改docker compose文件,切换各种版本,当我再次回到这个骗了我一次的页面,抱着试一试的心态点了顶部链接

 于是我看到了一系列新的参数,是的,我之前用的可太老了😅

 接下来,一边查资料,一边看官方文档,终于迎来了曙光。

三、问题解决

在一切开始之前我们还有个小配置要做,我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置Docker信任地址

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:ip要改成成自己的宿主机地址如192.168.238.10,别弄错了
"insecure-registries":["http://ip:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

1.dockercompose文件创建及修改

创建有两种方式:

直接通过shell找到指定目录新建文件或者用bash命令,下面演示一下命令创建

#切到这个目录下,没有的话在tmp目录下执行下一条
cd /tmp/registry-ui

#在tmp目录下新建目录,再执行下一条
mkdir registry-ui

#在registry-ui目录下新建文件docker-compose.yml
cd registry-ui
touch docker-compose.yml

#修改docker-compose.yml
vi docker-compose.yml

2.编写docker-compose文件

docker-compose.yml内容如下,具体含义可以去看看

Migrating from 1.x to 2.x · Joxit/docker-registry-ui Wiki

version: '3.8'
services:
  registry-ui:
    image: joxit/docker-registry-ui:main
    restart: always
    ports:
      - 8080:80
    environment:
      - SINGLE_REGISTRY=true
      - REGISTRY_TITLE=Docker Registry UI
      - DELETE_IMAGES=true
      - SHOW_CONTENT_DIGEST=true
      - NGINX_PROXY_PASS_URL=http://registry-server:5000
      - SHOW_CATALOG_NB_TAGS=true
      - CATALOG_MIN_BRANCHES=1
      - CATALOG_MAX_BRANCHES=1
      - TAGLIST_PAGE_SIZE=100
      - REGISTRY_SECURED=false
      - CATALOG_ELEMENTS_LIMIT=1000
    container_name: registry-ui
  registry-server:
    image: registry:2.8.2
    restart: always
    environment:
        REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: '[http://registry.example.com]'
        REGISTRY_HTTP_HEADERS_Access-Control-Allow-Methods: '[HEAD,GET,OPTIONS,DELETE]'
        REGISTRY_HTTP_HEADERS_Access-Control-Allow-Credentials: '[true]'
        REGISTRY_HTTP_HEADERS_Access-Control-Allow-Headers: '[Authorization,Accept,Cache-Control]'
        REGISTRY_HTTP_HEADERS_Access-Control-Expose-Headers: '[Docker-Content-Digest]'
        REGISTRY_STORAGE_DELETE_ENABLED: 'true'
    volumes:
      - ./registry/data:/var/lib/registry
    container_name: registry-server

 随后在registry-ui目录下执行

#创建并开启容器
docker compose up -ddocker compose up -d

检查一下容器开没开 

没什么问题就可以去浏览器检查一下

 

 3.上传拉取检验

随便选一个你本地的镜像tag之后push,以joxit/docker-registry-ui:1.5-static为例

#docker tag 后面这是镜像的REPOSITORY:TAG
docker tag joxit/docker-registry-ui:1.5-static 192.168.136.128:8080/ui:1.0

#完成后可以再去看一下images多了一个192.168.136.128:8080/ui
docker images

#上传到私服仓库
docker push 192.168.136.128:8080/ui:1.0

 成功上传了,可以通过页面直观的管理和操作,下面拉取感兴趣可以看看

 我们把本地的192.168.136.128:8080/ui镜像删掉,joxit/docker-registry-ui:1.5-static也删掉

#删除本地
docker rmi 192.168.136.128:8080/ui:1.0 joxit/docker-registry-ui:1.5-static

#检查一下现在的images
docker images

#仓库拉取  可以直接从UI复制命令
docker pull 192.168.136.128:8080/ui:1.0

#检查一下现在的images
docker images

 好了,希望本次分享对你有帮助。😁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值