插件窝 干货文章 docker怎么搭建私有仓库

docker怎么搭建私有仓库

Registry Docker Harbor myregistrydomain 945    来源:    2025-04-06

Docker私有仓库搭建指南

搭建Docker私有仓库可以让你在企业内部或团队中安全地存储和管理Docker镜像。以下是详细的搭建步骤:

1. 使用Docker官方Registry镜像搭建

最简单的方法是使用Docker官方提供的Registry镜像:

# 拉取最新registry镜像
docker pull registry:latest

# 运行registry容器
docker run -d -p 5000:5000 --restart=always --name registry registry:latest

2. 配置HTTPS访问(生产环境推荐)

私有仓库默认使用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

3. 配置认证(可选)

添加基本认证:

# 创建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

4. 客户端配置

对于HTTP仓库(非安全)

编辑或创建/etc/docker/daemon.json

{
  "insecure-registries" : ["myregistrydomain.com:5000"]
}

然后重启Docker服务:

sudo systemctl restart docker

对于HTTPS仓库

将证书复制到客户端:

sudo mkdir -p /etc/docker/certs.d/myregistrydomain.com
sudo cp certs/domain.crt /etc/docker/certs.d/myregistrydomain.com/ca.crt

5. 使用私有仓库

# 登录(如果配置了认证)
docker login myregistrydomain.com:5000

# 标记镜像
docker tag myimage myregistrydomain.com:5000/myimage

# 推送镜像
docker push myregistrydomain.com:5000/myimage

# 拉取镜像
docker pull myregistrydomain.com:5000/myimage

6. 高级配置选项

可以通过环境变量配置更多选项:

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

7. 使用Harbor(企业级方案)

对于企业级需求,可以考虑使用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等企业级功能。

注意事项

  1. 生产环境务必使用HTTPS
  2. 定期备份/var/lib/registry目录(或你映射的本地目录)
  3. 考虑配置存储后端(如S3、Azure Blob等)而不是本地存储
  4. 对于大规模部署,考虑使用Harbor或其他企业级解决方案

以上步骤应该能帮助你成功搭建一个Docker私有仓库。根据你的具体需求,可以选择简单的Registry镜像或功能更全面的Harbor方案。