Docker 是一种流行的容器化平台,它允许开发者将应用程序及其依赖项打包到轻量级、可移植的容器中,CentOS 是一个广泛使用的 Linux 发行版,许多企业选择在 CentOS 上运行 Docker 容器,为了有效管理容器镜像,搭建私有仓库是一个常见需求,本文将介绍如何在 CentOS 系统上搭建 Docker 私有仓库,包括环境准备、安装配置、安全认证以及常见问题的解决方法。

环境准备
在开始之前,确保你的 CentOS 系统满足以下要求:系统版本为 CentOS 7 或更高,Docker 已正确安装并运行,并且有足够的存储空间用于存储镜像,建议使用一台独立的服务器作为私有仓库,避免与其他服务资源冲突,确保服务器可以访问互联网,以便下载必要的软件包。
安装和配置 Docker 私有仓库
Docker 官方提供了 Docker Registry,这是一个开源的镜像仓库服务,我们可以使用 Docker Compose 来简化部署过程,安装 Docker Compose,如果尚未安装,可以通过以下命令完成安装:
sudo yum install -y docker-compose
安装完成后,创建一个目录用于存放 Docker Registry 的配置文件和数据:
mkdir -p /opt/registry cd /opt/registry
创建一个 docker-compose.yml 文件,内容如下:
version: '3'
services:
registry:
image: registry:2
ports:
- "5000:5000"
volumes:
- ./data:/var/lib/registry
environment:
- REGISTRY_HTTP_TLS_CERTIFICATE=/etc/registry/certs/domain.crt
- REGISTRY_HTTP_TLS_KEY=/etc/registry/certs/domain.key
restart: always 这个配置文件定义了一个名为 registry 的服务,使用官方的 registry:2 镜像,监听 5000 端口,并将数据存储在 ./data 目录中。
配置 HTTPS 认证
为了保证私有仓库的安全性,建议启用 HTTPS 认证,生成 SSL 证书和私钥,可以使用 OpenSSL 工具生成自签名证书:
mkdir -p /opt/registry/certs openssl req -newkey rsa:4096 -nodes -sha256 -keyout /opt/registry/certs/domain.key -x509 -days 365 -out /opt/registry/certs/domain.crt
在生成证书时,需要输入一些信息,如 Common Name(CN),建议填写服务器的域名或 IP 地址,生成完成后,将证书和私钥文件移动到 /opt/registry/certs 目录中。

上传和拉取镜像
配置完成后,启动 Docker Registry:
docker-compose up -d
你可以将本地镜像推送到私有仓库,为镜像打标签,格式为 <私有仓库地址>/<镜像名>:<标签>:
docker tag centos:latest 192.168.1.100:5000/centos:latest
使用 docker push 命令推送镜像:
docker push 192.168.1.100:5000/centos:latest
在其他客户端上拉取镜像时,需要先配置 Docker 客户端信任自签名证书,将生成的 domain.crt 文件复制到客户端的 /etc/docker/certs.d/192.168.1.100:5000 目录中,并重启 Docker 服务。
常见问题与解决方案
在使用 Docker 私有仓库时,可能会遇到一些问题,推送镜像时出现 “HTTP 403 Forbidden” 错误,这通常是由于认证配置不当导致的,检查证书是否正确配置,并确保客户端和服务器的证书匹配,另一个常见问题是镜像拉取缓慢,这可能是由于网络带宽不足或防火墙规则限制,可以通过优化网络配置或调整防火墙规则来解决。
相关问答 FAQs
问题 1:如何清理私有仓库中的旧镜像?
答:可以通过 Docker Registry 的 API 来删除旧镜像,安装 curl 工具,然后使用以下命令删除特定镜像:
curl -X DELETE -u username:password http://192.168.1.100:5000/v2/centos/manifests/latest
如果需要批量删除,可以编写脚本结合 curl 和 jq 工具实现。

问题 2:如何为私有仓库添加用户认证?
答:可以使用 htpasswd 工具创建用户认证文件,首先安装 httpd-tools:
sudo yum install -y httpd-tools
然后创建认证文件并添加用户:
htpasswd -Bc /opt/registry/htpasswd admin
在 docker-compose.yml 中添加认证配置:
environment: - REGISTRY_AUTH=htpasswd - REGISTRY_AUTH_HTPASSWD_REALM="Registry Realm" - REGISTRY_AUTH_HTPASSWD_PATH=/opt/registry/htpasswd
重启 Docker Registry 服务后,用户需要提供用户名和密码才能访问私有仓库。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复