CI/CD(四) docker-compose 安装harbor
一、部署 Harbor
1、下载安装包
# 下载离线安装包(以 v2.9.1 为例)
HARBOR_VERSION="v2.9.1"
wget https://github.com/goharbor/harbor/releases/download/${HARBOR_VERSION}/harbor-offline-installer-${HARBOR_VERSION}.tgz
# 解压到 /opt 目录
sudo tar xvf harbor-offline-installer-${HARBOR_VERSION}.tgz -C /docker/software
cd /docker/software/harbor
2 、修改配置文件
sudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.yml
配置文件示例(关键部分):
hostname: your-server-ip-or-domain.com # 必须修改
http:
port: 80
# 如需 HTTPS 请取消注释以下内容
# https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
harbor_admin_password: YourStrongPassword # 必须修改
data_volume: /data/harbor # 确保目录存在
3 、执行安装
sudo ./install.sh
二、验证部署
1、 检查容器状态
sudo docker-compose ps
2 、访问 Web 界面
浏览器访问:
http://your-server-ip-or-domain.com
使用账号:admin
+ 配置的密码登录
三、客户端配置
1、 配置 Docker 信任仓库
# 编辑 Docker 配置文件
sudo nano /etc/docker/daemon.json
# 添加以下内容(HTTP 协议需要)
{
"insecure-registries": ["your-server-ip-or-domain.com"]
}
# 重启 Docker
sudo systemctl restart docker
2 、推送镜像示例
# 登录仓库
docker login your-server-ip-or-domain.com -u admin
# 标记并推送镜像
docker tag nginx:latest your-server-ip-or-domain.com/library/nginx:latest
docker push your-server-ip-or-domain.com/library/nginx:latest
四、进阶配置
1、生成自签名证书(HTTPS)
sudo mkdir -p /etc/harbor/certs
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/harbor/certs/harbor.key \
-out /etc/harbor/certs/harbor.crt \
-subj "/CN=your-server-ip-or-domain.com"
2、设置开机自启
创建服务文件 /etc/systemd/system/harbor.service
:
[Unit]
Description=Harbor Service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/harbor
ExecStart=/usr/local/bin/docker-compose up -d
ExecStop=/usr/local/bin/docker-compose down
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl enable harbor
常见问题
Q1: 推送镜像时报证书错误
✅ 解决方案:
- 确认已配置
insecure-registries
- 重启 Docker 服务
Q2: Web 界面无法访问
✅ 检查步骤:
docker exec -it harbor-db psql -U postgres
- 防火墙是否开放端口:
sudo ufw allow 80/tcp
- 容器是否正常运行:
sudo docker-compose ps
Q3: 忘记管理员密码
✅ 重置方法:
- 进入 PostgreSQL 容器:
docker exec -it harbor-db psql -U postgres
- 执行 SQL 命令:
UPDATE harbor_user SET salt='', password='' WHERE username='admin';
- 新密码将自动同步为
harbor.yml
中的配置值