CentOS环境下如何搭建Docker私有仓库?

在CentOS系统中搭建Docker私有仓库(Registry),是企业级容器化部署的重要环节,可实现对镜像的全存储与高效分发,本文将系统介绍其部署流程及核心配置要点。

CentOS环境下如何搭建Docker私有仓库?

环境准备与基础配置

需确保CentOS版本为7及以上,内核支持Docker运行(建议3.10+),首先更新系统并安装必要工具:

yum update -y && yum install -y yum-utils device-mapper-persistent-data lvm2

接着配置Docker官方源并安装:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo  
yum install -y docker-ce docker-ce-cli containerd.io

启动Docker服务并设置开机自启:

systemctl start docker && systemctl enable docker

私有仓库部署步骤

拉取官方Registry镜像

docker pull registry:latest

运行Registry容器

通过以下命令创建并启动容器,监听5000端口(默认 Registry 端口):

docker run -d -p 5000:5000 --name my-registry -v /opt/registry/data:/var/lib/registry registry:latest

参数说明:-v 将宿主机目录挂载至容器内部,实现数据持久化;--name 自定义容器名称。

配置Docker信任私有仓库

由于默认Docker仅信任HTTPS仓库,需修改daemon.json允许HTTP通信:

CentOS环境下如何搭建Docker私有仓库?

{
  "insecure-registries": ["192.168.1.100:5000"]
}

保存文件后重启Docker服务使配置生效:

systemctl restart docker

镜像上传与验证

标记本地镜像

以Nginx为例,将其打上私有仓库标签:

docker tag nginx:latest 192.168.1.100:5000/my-nginx:latest

推送镜像至仓库

执行推送操作:

docker push 192.168.1.100:5000/my-nginx:latest

验证镜像存储

可通过以下方式检查仓库状态:

  • 访问 http://192.168.1.100:5000/v2/_catalog 查看镜像列表
  • 进入挂载目录 /opt/registry/data 查看文件结构
操作 命令示例
启动Registry容器 docker run -d -p 5000:5000 registry
标记镜像 docker tag nginx:latest 私有地址/nginx
推送镜像 docker push 私有地址/nginx
查看仓库目录 ls /opt/registry/data

高级配置选项

若需启用HTTPS加密传输,需生成SSL证书并修改容器启动参数:

docker run -d -p 443:443 --restart=always --name registry 
-v /path/to/certs:/certs 
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt 
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key 
registry:latest

同时需在客户端添加CA证书信任,确保安全通信。

CentOS环境下如何搭建Docker私有仓库?


FAQs
Q1: 如何解决“denied: requested access to the resource is denied”错误?
A1: 该错误通常因未正确标记镜像或Docker未信任私有仓库导致,请确认:① 镜像已使用 docker tag 打上私有仓库地址前缀;② 客户端 daemon.json 中包含正确的 insecure-registries 配置且已重启Docker。

Q2: 私有仓库如何实现用户认证?
A2: 可通过添加 .htpasswd 文件启用基本认证,首先安装 httpd-tools

yum install -y httpd-tools
htpasswd -Bc /opt/auth/htpasswd admin

然后修改Registry容器启动参数:

docker run -d -p 5000:5000 --name registry 
-v /opt/registry/data:/var/lib/registry 
-v /opt/auth:/auth 
-e "REGISTRY_AUTH=htpasswd" 
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" 
registry:latest

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-17 14:39
下一篇 2025-10-17 14:48

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信