|
|
@@ -0,0 +1,157 @@
|
|
|
+> **Docker Registry User Interface**
|
|
|
+> The simplest and most complete UI for your private registry!
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+[官网文档](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 <registry-server>:5000
|
|
|
+```
|
|
|
+
|
|
|
+使用之前在 `htpasswd` 文件中设置的用户名和密码。
|
|
|
+
|
|
|
+### 5. 推送或拉取镜像
|
|
|
+
|
|
|
+成功登录后,你可以使用 Docker 命令推送或拉取镜像,例如:
|
|
|
+
|
|
|
+```bash
|
|
|
+docker tag my-image:latest <registry-server>:5000/my-image:latest
|
|
|
+docker push <registry-server>: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
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+配置成功后,访问对应域名,htpasswd认证,**默认的账号为admin,密码为admin**
|