使用以下compose配置即可,`joxit/docker-registry-ui`容器可选择是否部署,仅用来查看已缓存的image 核心配置基本在环境变量以及配置文档内,部署完成以后通过端口转发等暴露到外部网络 Docker运行 `docker run --rm --entrypoint htpasswd registry:2.8.2 -Bbn your_username your_password > auth/htpasswd` 生成的 `htpasswd`文件需要放入容器内部的 `/auth`文件夹内,以供registry引用并启用账密验证 外部执行docker pull之前先通过登录验证 `docker login registry.exam.com`,账密为上述htpasswd命令执行填入的 `your_username`和 `your_password`,通过后就能 `docker pull registry.exam.com:49998/hello-world`自动通过 `http://192.168.9.2:7893`拉取镜像 ###### Docker-compose.yaml ```yaml version: '3.3' services: registry: image: registry:2.8.2 container_name: registry restart: unless-stopped ports: - 49998:49998 volumes: - /volume1/docker/registry/auth:/auth - /volume1/docker/registry:/var/lib/registry - /volume1/docker/registry/config.yml:/etc/docker/registry/config.yml environment: - TZ=Asia/Shanghai - HTTPS_PROXY=http://192.168.9.2:7893 # 代理服务器, 自行解决 - HTTP_PROXY=http://192.168.9.2:7893 # 代理服务器, 自行解决 - "REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io" # 官方镜像仓库URL - "REGISTRY_PROXY_USERNAME=docker_hub_user_name" # 官方HUB登录用户名 - "REGISTRY_PROXY_PASSWORD=docker_hub_user_password" # 官方HUB登录密码, 如果开启了2FA则改为Access Token - REGISTRY_HTTP_ADDR=0.0.0.0:49998 # 监听地址, 后续外部访问时需要带上端口 - REGISTRY_STORAGE_DELETE_ENABLED:true - "REGISTRY_AUTH=htpasswd" # 使用基本的htpasswd文件校验, 避免被公网滥用 - "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd # network_mode: bridge registry-ui: image: joxit/docker-registry-ui:2 container_name: registry-ui restart: unless-stopped ports: - 49999:80 environment: - TZ=Asia/Shanghai - SINGLE_REGISTRY=true - REGISTRY_TITLE=Docker Registry UI - DELETE_IMAGES=true - SHOW_CONTENT_DIGEST=true - NGINX_PROXY_PASS_URL=http://192.168.9.11:49998 - SHOW_CATALOG_NB_TAGS=true - CATALOG_MIN_BRANCHES=1 - CATALOG_MAX_BRANCHES=1 - TAGLIST_PAGE_SIZE=100 - REGISTRY_SECURED=true - CATALOG_ELEMENTS_LIMIT=1000 network_mode: bridge networks: bridge: external: true ``` config.yml ```yaml version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry delete: enabled: true maintenance: uploadpurging: enabled: true age: 168h dryrun: false interval: 1m http: addr: 49998 headers: X-Content-Type-Options: [nosniff] Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE'] Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control'] Access-Control-Expose-Headers: ['Docker-Content-Digest'] health: storagedriver: enabled: true interval: 10s threshold: 3 proxy: remoteurl: https://registry-1.docker.io username: docker_hub_user_name # 官方HUB登录用户名 password: docker_hub_user_password # 官方HUB登录密码, 如果开启了2FA则改为Access Token ``` Loading... 使用以下compose配置即可,`joxit/docker-registry-ui`容器可选择是否部署,仅用来查看已缓存的image 核心配置基本在环境变量以及配置文档内,部署完成以后通过端口转发等暴露到外部网络 Docker运行 `docker run --rm --entrypoint htpasswd registry:2.8.2 -Bbn your_username your_password > auth/htpasswd` 生成的 `htpasswd`文件需要放入容器内部的 `/auth`文件夹内,以供registry引用并启用账密验证 外部执行docker pull之前先通过登录验证 `docker login registry.exam.com`,账密为上述htpasswd命令执行填入的 `your_username`和 `your_password`,通过后就能 `docker pull registry.exam.com:49998/hello-world`自动通过 `http://192.168.9.2:7893`拉取镜像 ###### Docker-compose.yaml ```yaml version: '3.3' services: registry: image: registry:2.8.2 container_name: registry restart: unless-stopped ports: - 49998:49998 volumes: - /volume1/docker/registry/auth:/auth - /volume1/docker/registry:/var/lib/registry - /volume1/docker/registry/config.yml:/etc/docker/registry/config.yml environment: - TZ=Asia/Shanghai - HTTPS_PROXY=http://192.168.9.2:7893 # 代理服务器, 自行解决 - HTTP_PROXY=http://192.168.9.2:7893 # 代理服务器, 自行解决 - "REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io" # 官方镜像仓库URL - "REGISTRY_PROXY_USERNAME=docker_hub_user_name" # 官方HUB登录用户名 - "REGISTRY_PROXY_PASSWORD=docker_hub_user_password" # 官方HUB登录密码, 如果开启了2FA则改为Access Token - REGISTRY_HTTP_ADDR=0.0.0.0:49998 # 监听地址, 后续外部访问时需要带上端口 - REGISTRY_STORAGE_DELETE_ENABLED:true - "REGISTRY_AUTH=htpasswd" # 使用基本的htpasswd文件校验, 避免被公网滥用 - "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd # network_mode: bridge registry-ui: image: joxit/docker-registry-ui:2 container_name: registry-ui restart: unless-stopped ports: - 49999:80 environment: - TZ=Asia/Shanghai - SINGLE_REGISTRY=true - REGISTRY_TITLE=Docker Registry UI - DELETE_IMAGES=true - SHOW_CONTENT_DIGEST=true - NGINX_PROXY_PASS_URL=http://192.168.9.11:49998 - SHOW_CATALOG_NB_TAGS=true - CATALOG_MIN_BRANCHES=1 - CATALOG_MAX_BRANCHES=1 - TAGLIST_PAGE_SIZE=100 - REGISTRY_SECURED=true - CATALOG_ELEMENTS_LIMIT=1000 network_mode: bridge networks: bridge: external: true ``` config.yml ```yaml version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry delete: enabled: true maintenance: uploadpurging: enabled: true age: 168h dryrun: false interval: 1m http: addr: 49998 headers: X-Content-Type-Options: [nosniff] Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE'] Access-Control-Allow-Headers: ['Authorization', 'Accept', 'Cache-Control'] Access-Control-Expose-Headers: ['Docker-Content-Digest'] health: storagedriver: enabled: true interval: 10s threshold: 3 proxy: remoteurl: https://registry-1.docker.io username: docker_hub_user_name # 官方HUB登录用户名 password: docker_hub_user_password # 官方HUB登录密码, 如果开启了2FA则改为Access Token ``` 最后修改:2026 年 08 月 06 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏