适用于 CentOS 7 的 Docker 安装与私有仓库证书配置的完整教程。包括:
- 安装 Docker CE
- 配置镜像加速器
- 配置 insecure registry
- 配置自签名证书(
ca.crt
) - 验证和排错建议
✅ CentOS 7 安装 Docker + 配置私有仓库证书完整教程
🧩 前提环境
- 操作系统:CentOS 7.x
- 权限:
root
用户或具备sudo
权限 - 网络要求:可访问你公司的私有镜像仓库(如
cr.registry.res.cloud.cic.inter
和cr.authentication.res.cloud.cic.inter
)
✅ 第一步:安装 Docker CE
1. 卸载旧版本(如存在):
sudo yum remove -y docker \
docker-client docker-client-latest \
docker-common docker-latest \
docker-latest-logrotate docker-logrotate \
docker-engine
2. 安装依赖:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 添加 Docker 官方仓库(推荐使用阿里云镜像):
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 安装 Docker CE:
sudo yum install -y docker-ce docker-ce-cli containerd.io
5. 启动并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
✅ 第二步:配置加速器和 insecure registry
编辑 Docker 配置文件:
sudo mkdir -p /etc/docker
sudo vi /etc/docker/daemon.json
🔧 推荐配置内容如下:
{
"registry-mirrors": ["https://<你的阿里云镜像ID>.mirror.aliyuncs.com"],
"insecure-registries": [
"cr.registry.res.cloud.cic.inter",
"cr.authentication.res.cloud.cic.inter"
]
}
替换 <你的阿里云镜像ID>
,或删掉 "registry-mirrors"
整行。
✅ 第三步:配置私有仓库证书信任(自签名证书)
1. 获取认证和 registry 的证书
使用 openssl
抓取证书(从认证服务器):
echo | openssl s_client -connect cr.authentication.res.cloud.cic.inter:443 -showcerts
把第一段 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE-----
复制,粘贴保存为:
vi ca.crt
2. 放入 Docker 信任路径
# 配置 registry
sudo mkdir -p /etc/docker/certs.d/cr.registry.res.cloud.cic.inter
sudo cp ca.crt /etc/docker/certs.d/cr.registry.res.cloud.cic.inter/ca.crt
# 配置认证服务
sudo mkdir -p /etc/docker/certs.d/cr.authentication.res.cloud.cic.inter
sudo cp ca.crt /etc/docker/certs.d/cr.authentication.res.cloud.cic.inter/ca.crt
❗ 证书文件必须命名为 ca.crt
,且为 PEM 格式
✅ 第四步:重启 Docker 并验证
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart docker
检查:
docker info | grep -A 5 'Insecure Registries'
你应该能看到这两行:
Insecure Registries:
cr.registry.res.cloud.cic.inter
cr.authentication.res.cloud.cic.inter
✅ 第五步:测试拉取镜像或构建 Dockerfile
1. 拉取测试:
docker pull cr.registry.res.cloud.cic.inter/baseimage-namespace/python3.7_on_kylin:latest
2. 构建镜像测试:
FROM cr.registry.res.cloud.cic.inter/baseimage-namespace/python3.7_on_kylin:latest
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
构建命令:
docker build -t my-image:v1 .
❗ 常见问题排查
问题 | 原因 | 解决方案 |
x509: certificate signed by unknown authority | 没配证书或路径错 | 确保 |
daemon.json 报错 | 格式不对 | |
docker pull 卡住或失败 | DNS 问题或防火墙 | 检查主机能否 curl 目标 registry |
insecure-registry 不生效 | registry 是 https 且没证书 | 要么信任证书,要么 registry 改成 http |
📦 可选附加项:让非 root 用户运行 Docker
sudo usermod -aG docker $USER
newgrp docker
✅ 教程结束!
- 打包好的
.sh
安装脚本
#!/bin/bash
set -e
# ===================== 用户可配置部分 =====================
REGISTRY_DOMAIN="cr.registry.res.cloud.cic.inter"
AUTH_DOMAIN="cr.authentication.res.cloud.cic.inter"
ALIYUN_MIRROR="" # 可留空,留空则不配置
# ==========================================================
echo "🧩 Step 1. 安装依赖并添加 Docker 源..."
yum remove -y docker docker-client docker-client-latest docker-common docker-latest \
docker-latest-logrotate docker-logrotate docker-engine || true
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
echo "✅ 安装 Docker..."
yum install -y docker-ce docker-ce-cli containerd.io
echo "✅ 启动 Docker..."
systemctl start docker
systemctl enable docker
echo "⚙️ Step 2. 配置 daemon.json..."
mkdir -p /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["$ALIYUN_MIRROR"],
"insecure-registries": [
"$REGISTRY_DOMAIN",
"$AUTH_DOMAIN"
]
}
EOF
echo "✅ daemon.json 写入完成"
echo "🔐 Step 3. 抓取并安装私有仓库证书..."
function fetch_cert() {
local domain=$1
local cert_dir="/etc/docker/certs.d/$domain"
mkdir -p "$cert_dir"
echo | openssl s_client -showcerts -connect $domain:443 </dev/null 2>/dev/null \
| awk '/BEGIN CERTIFICATE/,/END CERTIFICATE/ {print}' > "$cert_dir/ca.crt"
if [ ! -s "$cert_dir/ca.crt" ]; then
echo "❌ 无法获取 $domain 的证书,请检查网络或域名解析"
exit 1
fi
echo "✅ 已保存证书到 $cert_dir/ca.crt"
}
fetch_cert "$REGISTRY_DOMAIN"
fetch_cert "$AUTH_DOMAIN"
echo "🔄 Step 4. 重启 Docker..."
systemctl daemon-reexec
systemctl daemon-reload
systemctl restart docker
echo "🎉 所有步骤完成!你现在可以尝试拉取私有镜像:"
echo "docker pull $REGISTRY_DOMAIN/your-image-name:tag"
- 执行脚本:
chmod +x install_docker_with_registry.sh
sudo ./install_docker_with_registry.sh
- 🧪 验证成功:
docker info | grep -A 5 "Insecure Registries"
docker pull cr.registry.res.cloud.cic.inter/your-image:tag