Browse Source

add joxit

mapleSnow 1 year ago
parent
commit
6888a9ff2c
4 changed files with 205 additions and 0 deletions
  1. 1 0
      README.md
  2. 157 0
      joxit/README.md
  3. 46 0
      joxit/docker-compose.yml
  4. 1 0
      joxit/registry/auth/htpasswd

+ 1 - 0
README.md

@@ -8,3 +8,4 @@ TODO
 - qbittorrent: 一个开源的 BitTorrent 客户端,提供全面的功能和无广告的使用体验。
 - uptime-kuma: 一个开源的自托管状态监控工具,支持多种监控方式,界面美观友好。
 - ikaros: 一个开源的好东西。😁
+- joxit: Docker registry可视化页面,可以查询镜像的Dockerfile

+ 157 - 0
joxit/README.md

@@ -0,0 +1,157 @@
+> **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 <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
+
+![](https://easyimage.maplesnow.cn/i/2024/08/15/003036-0.webp)
+
+配置成功后,访问对应域名,htpasswd认证,**默认的账号为admin,密码为admin**

+ 46 - 0
joxit/docker-compose.yml

@@ -0,0 +1,46 @@
+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
+      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

+ 1 - 0
joxit/registry/auth/htpasswd

@@ -0,0 +1 @@
+admin:$2y$05$56OZ.zalatOj6MHL2w9WbunOuZQxjDtKJGVXRyby73bVeFNxru1HC