Docker 私有镜像仓库 二:Harbor部署
目录
Harbor 是一个由 CNCF(Cloud Native Computing Foundation)托管的 开源容器镜像仓库,主要用于存储和分发 Docker 镜像和 Helm Charts,同时增强了原生 Docker Registry 的功能,特别适合企业级使用场景。其实 Harbor 最早正是由 VMware 开发的开源项目,目的是增强 Docker Registry 的企业级功能,并解决容器镜像管理的诸多问题
下载地址:
https://github.com/goharbor/harbor/releases
系统环境:RockyLinux
前提
安装docker:
https://www.yesdotnet.com/archive/post/627869331431429.html
配置docker国内镜像:
https://www.yesdotnet.com/archive/post/627878383202309.html
由于文章写的时候理解不深,harbor推荐解压目录是root目录。因为最终会生成 docker-compose.yml。用于docker编排。
放到root是我感觉比较合理的做法。因为正常来说我的docker-compose.yml都是放到root下面的。这里也就是 root/harbor/docker-compose.yml。还可以接受,放到/tmp/下的话着实难以理解,可不要尝试着把docker-compose.yml迁移到其他目录。麻烦切不可用。因为后期对配置做修改的话会先删除coommon的config再运行 /root/harbor/prepare 命令的。这个命令会重新生成配置,以及docker-compose.yml。
# 停止容器
docker compose down
# 切换目录
cd /root/harbor
# 删除config配置
rm -rf ./common/config/*
# 删除docker编排配置文件
rm -f ./docker-compose.yml
# 重新生成
./prepare
一、放到服务器上并解压
上传目录:/tmp/harbor
解压命令:
tar -xvf /tmp/harbor-offline-installer-v2.13.1.tgz -C /root/
二、创建数据存储目录: Harbor 需要持久化存储其数据(镜像、数据库、配置等)。
mkdir -pv /opt/harbor/data
三、生成一个https证书
新建 /opt/harbor/ssl 文件夹
mkdir -pv /opt/harbor/ssl
终端进入ssl目录。我们生成的https证书文件会放在当前目录
cd /opt/harbor/ssl/
3.1 生成私钥文件
生成一个2048位的RSA私钥。
openssl genrsa -out private.key 2048
3.2 生成证书请求文件(CSR)
使用以下命令生成一个证书请求文件(例如 server.csr):
openssl req -new -key private.key -out server.csr
3.3生成自签名证书
使用以下命令生成自签名证书(例如 server.crt)
openssl x509 -req -days 365 -in server.csr -signkey private.key -out server.crt
生成一个有效期为365天的自签名证书,它将使用私钥文件来签名证书请求文件。
注意,可以根据需要调整证书的有效期 -days 参数。
四、配置 Harbor (harbor.yml
)
进入harbar解压目录
cd /root/harbor
复制harbor.yml.tmpl 名称为 harbor.yml
cp harbor.yml.tmpl harbor.yml
hostname
: 设置 Harbor 的访问地址(域名或 IP)。客户端将使用此地址访问 Harbor。务必确保客户端能解析此地址。
hostname: 192.168.10.253
http
/ https
: 配置访问协议。默认启用 HTTPS,启用 HTTP(默认端口 80)。,如果暂时不配置 HTTPS 证书,需要注释掉 https 部分
我们这里使用上一步生成的证书
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /opt/harbor/ssl/server.crt
private_key: /opt/harbor/ssl/private.key
harbor_admin_password
: 设置 Harbor 初始 admin 用户的密码。务必修改为强密码。
harbor_admin_password: Harbor12345
data_volume
: 指定 Harbor 持久化数据的存储路径,使用之前创建的目录。
# The default data volume
data_volume: /opt/harbor/data
其他配置项可根据需要调整(如数据库、日志、扫描器等)。
五、安装Harbor
执行安装脚本。Harbor 使用 Docker Compose 进行编排。
./install.sh --with-trivy
安装脚本会执行以下操作:
检查 Docker 和 Docker Compose 环境。
加载 Harbor 所需的 Docker 镜像到本地。
根据 harbor.yml 生成 Docker Compose 配置文件 (docker-compose.yml) 和相关服务的配置文件。
使用 docker-compose up -d 启动所有 Harbor 服务容器。
一共5个步骤,如图所示
六、设置防火墙
# 放行80端口
sudo firewall-cmd --permanent --add-port=80/tcp
# 放行443端口
sudo firewall-cmd --permanent --add-port=443/tcp
# 重载防火墙规则
sudo firewall-cmd --reload
# 查看防火墙放行端口
sudo firewall-cmd --list-ports
七、访问Harbor Web UI
安装成功后,通过浏览器访问配置的hostname
(例如192.168.10.253
,取决于你的 hostname
配置和网络解析)。
用户名:admin
密码: 你在 harbor.yml
中设置的 harbor_admin_password
。
登录后,你会看到 Harbor 的管理界面。
八、推送镜像到Harbor
配置Docker客户端信任
编辑 /etc/docker/daemon.json
:
{
"insecure-registries": ["https://192.168.10.253"]
}
保存后重启 Docker 服务:
sudo systemctl restart docker
登录docker
docker login --username=admin --password=*** https://192.168.10.253
设置镜像的tag并推送
# 设置镜像 tag
docker tag nginx-ui5-build:1.77.6 192.168.10.253/library/nginx-ui5-build:1.77.6
# 推送到服务器
docker push 192.168.10.253/library/nginx-ui5-build:1.77.6