Skip to content

docker-distribution部署

环境准备

服务器名称IP说明操作系统预装软件
registry192.168.148.140Registry节点openEuler-24.03(LTS)Docker
client192.168.148.141Docker客户端openEuler-24.03(LTS)Docker

部署方式

docker-distribution有两种主要部署方式:

  1. 使用Docker镜像部署(推荐)
  2. 直接安装二进制文件

常用启动参数

Docker镜像方式启动参数

环境变量说明默认值
REGISTRY_STORAGE_DELETE_ENABLED是否启用镜像删除功能false
REGISTRY_HTTP_ADDR监听地址和端口:5000
REGISTRY_HTTP_TLS_CERTIFICATETLS证书路径-
REGISTRY_HTTP_TLS_KEYTLS私钥路径-
REGISTRY_HTTP_SECRET用于签名认证令牌的秘密自动生成
REGISTRY_LOG_LEVEL日志级别info
REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR镜像层描述符缓存类型inmemory
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY镜像存储目录/var/lib/registry
REGISTRY_AUTH_HTPASSWD_PATHhtpasswd文件路径-
REGISTRY_AUTH_HTPASSWD_REALM认证域basic-realm

二进制方式启动参数

在配置文件中设置,对应上面的环境变量,例如:

yaml
version: 0.1
log:
  level: debug
http:
  addr: :5000
storage:
  delete:
    enabled: true
  filesystem:
    rootdirectory: /var/lib/registry
  cache:
    blobdescriptor: inmemory

方式一:使用Docker镜像部署

使用docker run命令部署

bash
# 拉取官方registry镜像
docker pull registry:2

# 创建本地存储目录
mkdir -p /data/registry

# 启动registry容器(带常用参数)
docker run -d \
  --restart=always \
  --name registry \
  -p 5000:5000 \
  -v /data/registry:/var/lib/registry \
  -v /certs:/certs \
  -e REGISTRY_STORAGE_DELETE_ENABLED=true \
  -e REGISTRY_LOG_LEVEL=debug \
  -e REGISTRY_HTTP_SECRET=mysecret \
  -e REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR=inmemory \
  registry:2

# 验证registry是否运行正常
docker ps | grep registry

使用Docker Compose部署

  1. 创建docker-compose.yml文件:
yaml
version: '3.8'

services:
  registry:
    image: registry:2
    container_name: registry
    restart: always
    ports:
      - "5000:5000"
    volumes:
      - /data/registry:/var/lib/registry
    environment:
      - REGISTRY_STORAGE_DELETE_ENABLED=true  # 启用镜像删除功能
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"
  1. 启动服务:
bash
# 创建本地存储目录
mkdir -p /data/registry

# 使用docker-compose启动服务
docker-compose up -d

# 验证服务是否运行正常
docker-compose ps
  1. 常用Docker Compose命令:
bash
# 查看服务日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重启服务
docker-compose restart

方式二:直接安装二进制文件

bash
# 下载最新版本的docker-distribution
wget https://github.com/distribution/distribution/releases/download/v2.8.3/distribution-2.8.3.linux-amd64.tar.gz

# 解压到指定目录
tar -xvf distribution-2.8.3.linux-amd64.tar.gz -C /usr/local/

# 创建符号链接
ln -s /usr/local/distribution-2.8.3.linux-amd64 /usr/local/registry

# 创建配置文件目录
mkdir -p /etc/registry

# 创建主配置文件
cat > /etc/registry/config.yml << 'EOF'
version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
EOF

# 创建systemd服务文件
cat > /etc/systemd/system/registry.service << 'EOF'
[Unit]
Description=Docker Registry
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/registry/bin/registry serve /etc/registry/config.yml
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 启动并设置开机自启
systemctl daemon-reload
systemctl start registry
systemctl enable registry

# 验证服务是否运行正常
systemctl status registry