在CentOS系统中搭建Docker私有仓库(Registry),是企业级容器化部署的重要环节,可实现对镜像的安全存储与高效分发,本文将系统介绍其部署流程及核心配置要点。
环境准备与基础配置
需确保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通信:
{ "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证书信任,确保安全通信。
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
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复