CentOS 7 的 Docker 安装与私有仓库证书配置的完整教程

适用于 CentOS 7 的 Docker 安装与私有仓库证书配置的完整教程。包括:

  1. 安装 Docker CE
  2. 配置镜像加速器
  3. 配置 insecure registry
  4. 配置自签名证书(ca.crt
  5. 验证和排错建议

✅ CentOS 7 安装 Docker + 配置私有仓库证书完整教程


🧩 前提环境

  • 操作系统:CentOS 7.x
  • 权限:root 用户或具备 sudo 权限
  • 网络要求:可访问你公司的私有镜像仓库(如 cr.registry.res.cloud.cic.intercr.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

没配证书或路径错

确保 /etc/docker/certs.d/<域名>/ca.crt 存在

daemon.json 报错

格式不对

JSON Online Validator and Formatter - JSON Lint 校验 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值