使用Docker仓库部署

部署 Docker 仓库

安装docker和docker-compose

  • 配置镜像源
dnf 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
  • 安装docker+docker-compose
sudo dnf install -y \
  docker-ce docker-ce-cli \
  docker-buildx-plugin docker-compose-plugin

wget https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64
sudo mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  • 启动docker
sudo systemctl start docker

安装 Docker 仓库

使用 harbor 作为 Docker 仓库

  • 官网地址:https://goharbor.io/
  • 下载 2.14.0 版本安装包:
wget https://github.com/goharbor/harbor/releases/download/v2.14.0/harbor-offline-installer-v2.14.0.tgz
tar -xvf harbor-offline-installer-v2.14.0.tgz

安装 harbor

  • 准备证书
mkdir /data/cert
cd /data/cert

# 生成证书(只可以用于自行测试,生产环境请使用公有 CA 证书)
openssl req -newkey rsa:4096 -nodes -sha256 \
  -keyout harbor.key -x509 -days 365 -out harbor.crt \
  -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=example/CN=harbor.example.com"
  • 修改配置文件
cd harbor
cp harbor.yml.tmpl harbor.yml

修改信息:

hostname: harbor.example.com

http:
  port: 80

https:
  port: 443
  certificate: /data/cert/harbor.crt
  private_key: /data/cert/harbor.key

data_volume: /data/harbor

harbor_admin_password: <PASSWORD>
  • 安装 harbor(安装后默认会启动)
./install.sh
  • 登录 harbor 后台: https://harbor.example.com
  • 默认用户admin,初次登陆建议修改密码

推送镜像到 Docker 仓库

  • 登录 Docker 仓库
docker login harbor.example.com

自行生成的证书需要将密钥信息添加到系统信任,否则会出现证书验证失败的错误。

# 从Harbor服务器获取证书
openssl s_client -connect harbor.example.com:443 \
  -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > harbor-ca.crt

# 创建Docker证书目录
sudo mkdir -p /etc/docker/certs.d/harbor.example.com

# 复制证书文件
sudo cp harbor-ca.crt /etc/docker/certs.d/harbor.example.com/ca.crt

# 重启Docker服务
sudo systemctl restart docker
  • 修改docker镜像源
  • 编辑 /etc/docker/daemon.json 文件,添加如下内容:
{
  "insecure-registries": ["harbor.example.com"],
  "registry-mirrors": ["https://harbor.example.com"]
}
  • 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 推送镜像

以下内容均为示例,请根据实际情况修改镜像名称和版本号。

# 查看当前系统中的镜像
docker images

# 假如返回了下面的信息
# mysql        8.4.6     c7fa03bf950b   6 weeks ago   785MB

# 修改镜像名称为 harbor.example.com/library/mysql:8.4.6
docker tag mysql:8.4.6 harbor.example.com/library/mysql:8.4.6

# 推送镜像到 Docker 仓库
docker push harbor.example.com/library/mysql:8.4.6
  • 验证上传的镜像

验证上传的镜像

验证镜像是否上传成功

  • 下载镜像
docker pull harbor.example.com/library/mysql:8.4.6

更多推荐