docker-distribution部署
环境准备
| 服务器名称 | IP | 说明 | 操作系统 | 预装软件 |
|---|---|---|---|---|
| registry | 192.168.148.140 | Registry节点 | openEuler-24.03(LTS) | Docker |
| client | 192.168.148.141 | Docker客户端 | openEuler-24.03(LTS) | Docker |
部署方式
docker-distribution有两种主要部署方式:
- 使用Docker镜像部署(推荐)
- 直接安装二进制文件
常用启动参数
Docker镜像方式启动参数
| 环境变量 | 说明 | 默认值 |
|---|---|---|
| REGISTRY_STORAGE_DELETE_ENABLED | 是否启用镜像删除功能 | false |
| REGISTRY_HTTP_ADDR | 监听地址和端口 | :5000 |
| REGISTRY_HTTP_TLS_CERTIFICATE | TLS证书路径 | - |
| REGISTRY_HTTP_TLS_KEY | TLS私钥路径 | - |
| REGISTRY_HTTP_SECRET | 用于签名认证令牌的秘密 | 自动生成 |
| REGISTRY_LOG_LEVEL | 日志级别 | info |
| REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR | 镜像层描述符缓存类型 | inmemory |
| REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY | 镜像存储目录 | /var/lib/registry |
| REGISTRY_AUTH_HTPASSWD_PATH | htpasswd文件路径 | - |
| 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部署
- 创建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"- 启动服务:
bash
# 创建本地存储目录
mkdir -p /data/registry
# 使用docker-compose启动服务
docker-compose up -d
# 验证服务是否运行正常
docker-compose ps- 常用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