搭建带有Web管理功能的私有Docker Registry

本文记录了搭建简易的(无WebUI)私有Docker Registry服务以及推送镜像的相关内容


  1. 搭建单一Docker Registry请见《搭建私有Docker Registry以及推送镜像》,本文不再赘述
  2. 搭建带有Web管理功能的私有Docker Registry,分别需要Nginx(域名解析及反代,这里直接使用宿主机上编译好的)、Docker Registry及Docker Registry Web(提供Web管理界面)
  3. 为了配置方便,关掉了用户名密码功能,改为使用阿里云安全组直接限制80端口的入方向IP(外网为固定IP或者从某一固定IP代理)
  4. 使用Docker-Compose编排,配置文件:

    version: '3'
    services:
    
     registry-srv:
     image: registry:2.4
     ports:
       - "9527:5000"
     volumes:
       - /var/lib/docker/registry:/var/lib/registry
     environment:
       - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry
       - REGISTRY_STORAGE_DELETE_ENABLED=true
     restart: always
    
     registry-web:
     image: hyper/docker-registry-web
     ports:
       - "29527:8080"
     volumes:
       - /var/lib/docker/registry/web:/data
     environment:
       - REGISTRY_URL=http://172.19.0.1:9527/v2
       - REGISTRY_NAME=registry.hahahaha.com
       - REGISTRY_READONLY=false
     restart: always
     depends_on:
       - registry-srv
    
  5. registry-srv是私有Docker Registry服务,用的是简配(没上配置文件,只映射了部分环境变量和容器存储位置。把环境变量的“REGISTRY”前缀去掉,改成小写再把下划线改写成层级,就是YAML配置);registry-web是Web界面服务,registry.hahahaha.com的DNS解析和阿里云安全组需要配置下,环境变量里“REGISTRYURL”是需要连接到的私有Docker Registry服务,这里的172.x.0.1的地址是和容器同网段的宿主机地址(不要用URL,访问不了;也不要用localhost,容器内的localhost不会指向宿主机)
  6. 然后需要配一下Nginx的反代。分别发到上文的9527和29527端口即可。
  7. 在Docker-Compose配置文件使用docker-compose up -d命令拉起服务,然后用docker-compose logs -f命令监控,直到出来“Server startup……”等内容时,nginx -s reload,然后访问registry.hahahaha.com就能看到管理界面了。