> **Docker Registry User Interface** > The simplest and most complete UI for your private registry! ![](https://easyimage.maplesnow.cn/i/2024/08/15/003232-0.webp) [官网文档](https://joxit.dev/docker-registry-ui/) ## 快速开始 ```yaml version: '3.8' services: registry-ui: image: joxit/docker-registry-ui:main restart: always ports: - 80:80 registry-server: image: registry:2.8.2 restart: always volumes: - ./registry/data:/var/lib/registry ``` ## 开启仓库认证 ### 1. 生成认证文件 首先,使用 `htpasswd` 命令生成一个包含用户名和密码的认证文件。如果你没有安装 `htpasswd`,可以通过以下方式安装: - 对于 Ubuntu 或 Debian 系统: ```bash sudo apt-get install apache2-utils ``` - 对于 CentOS 或 Fedora 系统: ```bash sudo yum install httpd-tools ``` 然后,使用 `htpasswd` 创建认证文件: ```bash mkdir -p registry/auth htpasswd -Bc registry/auth/htpasswd myuser ``` `registry/auth/htpasswd` 是保存认证信息的文件路径,`myuser` 是你要添加的用户名。系统会提示你输入并确认密码。 ### 2. 配置 Docker Registry 使用认证 接下来,修改你的 `docker-compose.yml` 文件,将认证文件挂载到容器中,并启用认证: ```yaml version: '3.8' services: registry-server: image: registry:2.8.2 restart: always environment: REGISTRY_AUTH: htpasswd # 新增认证配置 REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd # 新增认证配置 REGISTRY_AUTH_HTPASSWD_REALM: basic-realm # 新增认证配置 volumes: - ./registry/data:/var/lib/registry - ./registry/auth:/auth # 新增认证文件挂载 ``` ### 3. 启动或重启 Docker Registry 保存 `docker-compose.yml` 文件,然后启动或重启 Docker Registry: ```bash docker-compose up -d ``` ### 4. 登录到 Docker Registry 在客户端推送或拉取镜像之前,需要先登录到 Docker Registry: ```bash docker login :5000 ``` 使用之前在 `htpasswd` 文件中设置的用户名和密码。 ### 5. 推送或拉取镜像 成功登录后,你可以使用 Docker 命令推送或拉取镜像,例如: ```bash docker tag my-image:latest :5000/my-image:latest docker push :5000/my-image:latest ``` ## 开启Https,完整配置 ```yaml version: '3.8' services: registry-ui: image: joxit/docker-registry-ui:main restart: always ports: - 10023:80 # 按需修改 environment: - REGISTRY_URL=https://xxx.maplesnow.cn # 配置成自己的域名 - SINGLE_REGISTRY=true - REGISTRY_TITLE=Docker Registry UI - DELETE_IMAGES=true - SHOW_CONTENT_DIGEST=true - NGINX_PROXY_PASS_URL=http://registry-server:5000 - TAGLIST_PAGE_SIZE=100 - REGISTRY_SECURED=false - CATALOG_ELEMENTS_LIMIT=1000 container_name: registry-ui networks: - xxx-proxy # 对应network中网络,根据实际情况调整 registry-server: container_name: registry-server image: registry:2.8.2 restart: always expose: - 5000 environment: REGISTRY_HTTP_HEADERS_Access-Control-Allow-Origin: "['https://xxx.maplesnow.cn']" # 和registry-ui中REGISTRY_URL保持一致 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' REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd # 默认账号密码为admin / admin REGISTRY_AUTH_HTPASSWD_REALM: basic-realm volumes: - ./registry/data:/var/lib/registry - ./registry/auth:/auth networks: - xxx-proxy # 对应network中网络,根据实际情况调整 networks: xxx-proxy: # 外部网络,用于nginx容器实例连通,进行反向代理, external: true ``` ### Npm配置 **说明**:Nginx反向代理到`Registry-ui`的服务端口。因为Registry服务的80端口在容器内部本身也是一个Nginx服务。默认访问前端UI界面,所有访问的registry-server的路由都带了`/v2`的前缀,会被反代到Registry-server ![](https://easyimage.maplesnow.cn/i/2024/08/15/003036-0.webp) 配置成功后,访问对应域名,htpasswd认证,**默认的账号为admin,密码为admin**