docker部署私有仓库harbor
·
使用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
更多推荐
所有评论(0)