Docker-compose搭建Docker Hub镜像仓库
准备工作
确保已安装Docker和Docker-compose。建议使用Linux环境,并分配至少2GB内存。
创建配置文件
新建目录docker-registry,在该目录下创建docker-compose.yml文件,内容如下:
yaml
version: '3'
services:
registry:
image: registry:2
ports:
- "5000:5000"
volumes:
- ./data:/var/lib/registry
environment:
REGISTRY_STORAGE_DELETE_ENABLED: "true"
启动服务
在目录下执行命令启动服务:
bash
docker-compose up -d
验证服务
检查服务是否正常运行:
bash
curl http://localhost:5000/v2/_catalog
预期输出为{"repositories":[]},表示仓库为空但服务正常。
配置客户端
若需从其他主机访问,需修改Docker客户端配置(Linux系统):
- 编辑
/etc/docker/daemon.json,添加:
json
{
"insecure-registries": ["your-server-ip:5000"]
}
- 重启Docker服务:
bash
sudo systemctl restart docker
推送镜像示例
标记并推送本地镜像到私有仓库:
bash
docker tag your-image your-server-ip:5000/your-image
docker push your-server-ip:5000/your-image
管理镜像
删除镜像需调用Registry API:
bash
curl -X DELETE http://your-server-ip:5000/v2/your-image/manifests/<digest>
通过docker exec进入容器执行垃圾回收:
bash
docker exec -it registry_container bin/registry garbage-collect /etc/docker/registry/config.yml
持久化数据
所有镜像数据会保存在./data目录,定期备份该目录即可。
HTTPS配置(可选)

如需启用HTTPS,需在docker-compose.yml中挂载证书文件:
yaml
volumes:
- ./certs:/certs
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
注意事项
- 默认配置仅适合测试环境,生产环境需配置认证(如添加
htpasswd)。 - 存储路径可根据需求修改为NFS或其他持久化存储方案。
- Registry API版本可能变化,建议查阅官方文档获取最新参数。
