目 录CONTENT

文章目录

搭建Docker本地镜像库

过客
2025-11-25 / 0 评论 / 0 点赞 / 2 阅读 / 0 字

之前用hyper/docker-registry-web可视化管理Docker本地镜像仓库,但突然一次更新后发现启动不了了, 发现是兼容性问题。hyper/docker-registry-web 已​多年未维护​(GitHub 最后 commit 是 2017 年),在现代系统上越来越容易出兼容性问题。改用了新的joxit/docker-registry-ui,这个是用GO编写的WebUI,这个镜像小于20MB,启动快,内存存在约在10MB左右。废话不多说,开整。

一、创建目录

我们将所有数据都放到/home/registry目录下

mkdir /home/registry
cd /home/registry
mkdir auth conf data
  • auth:验证目录,存放账号密码文件
  • conf:配置文件目录
  • data:仓库数据存放目录

二、生成 htpasswd 密码文件

# 安装 httpd-tools(CentOS/RHEL)
sudo yum install -y httpd-tools

# 或 Ubuntu/Debian
sudo apt-get install -y apache2-utils

# 创建密码
sudo htpasswd -Bbn username password >/home/registry/auth/htpasswd

# 添加其他账号
sudo htpasswd -Bb /home/registry/auth/htpasswd another_user another_password

# 设置权限
chmod 600 /home/registry/auth/htpasswd

三、编辑registry配置文件

为了方便添加修改账号,我们将部分registry配置直接放到配置文件中/home/registry/conf/registry.yml

version: 0.1    
log:
  fields:
    service: registry
storage:
  delete:           # 默认是不能删除的,添加删除支持
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:    # 仓库文件存放目录
    rootdirectory: /var/lib/registry 
 
http:
  addr: :5000   
  
auth:
  htpasswd:    # 验证方式
    realm: basic-realm
    path: /etc/docker/registry/auth/htpasswd

四、配置docker-compose

创建 /home/registry/docker-compose.yml文件

version: '3'

services:
  registry:
    image: registry:latest
    container_name: registry
    restart: always
    volumes:
	  - /home/registry/data:/var/lib/registry/docker/registry # 映射仓库目录
	  - /home/registry/auth:/etc/docker/registry/auth # 映射认证文件
	  - /home/registry/conf/registry.yml:/etc/docker/registry/config.yml:ro # 映射配置文件
    networks:
      - registry-net
  registry-ui:
    image: joxit/docker-registry-ui:latest
    container_name: registry-ui
    restart: always
    ports:
      - "8080:80"
    environment:
      NGINX_PROXY_PASS_URL: http://registry:5000 # 通过容器内Nginx转发
	  DELETE_IMAGES: "true" # 显示删除按钮
      SINGLE_REGISTRY: "true"
    depends_on:
      - registry
    networks:
      - registry-net

networks:
  registry-net:
    driver: bridge

五、安装

# 进入docker-compose目录
cd /home/registry/

# 安装
docker-compose up -d

# 卸载
docker-compose down

六、配置Https反向代理

joxit/docker-registry-ui本身不提供用户登录功能​,它只是一个无状态的前端 + 内置 Nginx,所以我们在做反向代理的时候添加Basic Auth密码验证,这个密码文件和registry的可以共用同一个文件。

server {
    listen 443 ssl ; 
    listen [::]:443 ssl ; 
    server_name yourdomain.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    # 添加这两行密码验证
    auth_basic "Registry UI Login";
    auth_basic_user_file /home/registry/auth/htpasswd;

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

七、登录测试

输入域名,账号密码登录

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区