搭建Docker私有仓库可以让你在企业内部或团队中安全地存储和管理Docker镜像。以下是详细的搭建步骤:
最简单的方法是使用Docker官方提供的Registry镜像:
# 拉取最新registry镜像
docker pull registry:latest
# 运行registry容器
docker run -d -p 5000:5000 --restart=always --name registry registry:latest
私有仓库默认使用HTTP协议,生产环境应配置HTTPS:
# 创建证书目录
mkdir -p certs
# 生成自签名证书(测试用,生产环境应使用正规CA证书)
openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
-x509 -days 365 -out certs/domain.crt
运行带HTTPS的registry:
docker run -d \
--restart=always \
--name registry \
-v "$(pwd)"/certs:/certs \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
-p 443:443 \
registry:latest
添加基本认证:
# 创建auth目录
mkdir -p auth
# 创建密码文件(替换username和password)
docker run --entrypoint htpasswd registry:latest -Bbn username password > auth/htpasswd
# 运行带认证的registry
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v "$(pwd)"/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
registry:latest
编辑或创建/etc/docker/daemon.json
:
{
"insecure-registries" : ["myregistrydomain.com:5000"]
}
然后重启Docker服务:
sudo systemctl restart docker
将证书复制到客户端:
sudo mkdir -p /etc/docker/certs.d/myregistrydomain.com
sudo cp certs/domain.crt /etc/docker/certs.d/myregistrydomain.com/ca.crt
# 登录(如果配置了认证)
docker login myregistrydomain.com:5000
# 标记镜像
docker tag myimage myregistrydomain.com:5000/myimage
# 推送镜像
docker push myregistrydomain.com:5000/myimage
# 拉取镜像
docker pull myregistrydomain.com:5000/myimage
可以通过环境变量配置更多选项:
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v "$(pwd)"/data:/var/lib/registry \
-e REGISTRY_STORAGE_DELETE_ENABLED=true \
-e REGISTRY_LOG_LEVEL=debug \
registry:latest
对于企业级需求,可以考虑使用Harbor:
# 下载Harbor离线安装包
wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz
# 解压
tar xvf harbor-offline-installer-v2.5.0.tgz
cd harbor
# 编辑配置文件
cp harbor.yml.tmpl harbor.yml
vi harbor.yml
# 安装
./install.sh
Harbor提供了更丰富的功能,包括UI界面、镜像扫描、RBAC等企业级功能。
/var/lib/registry
目录(或你映射的本地目录)以上步骤应该能帮助你成功搭建一个Docker私有仓库。根据你的具体需求,可以选择简单的Registry镜像或功能更全面的Harbor方案。