Docker容器镜像仓库私有化部署如何操作
最近公司要求搭建私有Docker镜像仓库,看了官方文档有些地方不太明白。想请教各位:
- 部署私有镜像仓库需要准备哪些基础环境?服务器配置有什么要求?
- 用Harbor和直接用Docker Registry有什么区别?哪个更适合中小型企业?
- 部署过程中SSL证书配置总是报错,有没有详细的避坑指南?
- 如何设置访问权限控制?想实现不同项目组只能访问自己的镜像库
- 后期维护要注意哪些问题?比如镜像清理、备份策略等 求有实际部署经验的大神分享下具体操作步骤和注意事项,谢谢!
3 回复
-
环境准备:确保服务器安装了 Docker 和 Docker-Compose。推荐使用 CentOS 7+ 或 Ubuntu 18+。
-
拉取官方 registry 镜像:
docker pull registry:2
-
创建配置文件: 在
/data/registry
创建配置目录,并添加config.yml
文件,内容如下:version: 0.1 log: fields: service: registry storage: filesystem: rootdirectory: /var/lib/registry http: addr: :5000 secret: 随机字符串 tls: certificate: /path/to/cert.pem key: /path/to/key.pem
-
启动私有仓库:
mkdir -p /data/registry && cd /data/registry docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`:/var/lib/registry \ registry:2
-
上传镜像: 标记镜像为私有仓库地址:
docker tag nginx:latest localhost:5000/nginx:latest
推送到私有仓库:
docker push localhost:5000/nginx:latest
-
配置客户端: 编辑
/etc/docker/daemon.json
添加:{ "insecure-registries": ["localhost:5000"] }
重启 Docker 服务并登录:
docker login localhost:5000
-
优化与安全:
- 使用 Nginx 反代增强安全性。
- 开启 HTTPS(需配置证书)。
- 设置访问权限和用户认证(如使用
dex
或htpasswd
)。
以下是一个简单的Docker私有镜像仓库部署教程:
-
安装Docker:确保服务器已安装Docker。未安装的可以使用命令
sudo apt-get update && sudo apt-get install docker.io
(基于Ubuntu)。 -
拉取官方Registry镜像:
sudo docker pull registry:2
-
运行Registry容器:
sudo mkdir -p /opt/registry/{auth,certs,data} sudo docker run -d -p 5000:5000 --restart=always --name registry \ -v /opt/registry/data:/var/lib/registry \ -v /opt/registry/auth:/auth \ -e REGISTRY_AUTH=htpasswd \ -e REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /opt/registry/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2
替换
domain.crt
和domain.key
为你的SSL证书和私钥。 -
创建用户:
sudo htpasswd -Bbn 用户名 密码 > /opt/registry/auth/htpasswd
-
标记镜像:例如将本地镜像
my-image
打上标签:sudo docker tag my-image localhost:5000/my-image
-
推送镜像:
sudo docker push localhost:5000/my-image
-
配置客户端信任:如果使用自签名证书,需将证书添加到客户端信任库中。
完成以上步骤后,你就成功搭建了一个私有的Docker镜像仓库。
以下是Docker私有镜像仓库部署教程(使用开源的Registry方案):
- 快速部署单机版
# 拉取registry镜像
docker pull registry:2
# 运行私有仓库
docker run -d \
-p 5000:5000 \
--name registry \
-v /myregistry:/var/lib/registry \
registry:2
- 配置TLS证书(安全访问)
# 生成自签名证书
openssl req -newkey rsa:4096 -nodes -sha256 \
-keyout domain.key -x509 -days 365 -out domain.crt
# 运行带证书的registry
docker run -d \
-p 5000:5000 \
-v /myregistry:/var/lib/registry \
-v /certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry:2
- 使用私有仓库
# 标记镜像
docker tag myimage localhost:5000/myimage
# 推送镜像
docker push localhost:5000/myimage
# 拉取镜像
docker pull localhost:5000/myimage
- 高级功能(可选)
- 添加认证(使用htpasswd)
- 配置Web UI(如docker-registry-frontend)
- 集群部署(配置后端存储为S3等)
注意事项:
- 生产环境建议使用Harbor等企业级方案
- 默认数据存储在/var/lib/registry,注意定期备份
- 跨节点访问需配置证书并修改docker daemon的insecure-registries设置
常用管理命令:
# 查看仓库中的镜像
curl -X GET http://localhost:5000/v2/_catalog
# 删除镜像(需启用删除功能)
docker exec registry registry garbage-collect /etc/docker/registry/config.yml