1. Ubuntu环境下Harbor Docker私有仓库部署指南
在容器化技术普及的今天,企业级Docker镜像管理已成为DevOps流程中的关键环节。Harbor作为VMware开源的企业级Registry项目,完美解决了原生Docker Registry在权限控制、镜像同步和漏洞扫描等方面的不足。本教程将基于Ubuntu 22.04 LTS系统,带你完成从零开始搭建生产级Harbor私有仓库的全过程。
实测环境:Ubuntu 22.04.3 LTS (Kernel 5.15.0-76-generic) + Docker 20.10.21 + Docker Compose v2.17.2 + Harbor v2.8.2
1.1 基础环境准备
首先更新系统并安装必要工具链:
sudo apt update && sudo apt upgrade -y sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg配置稳定版仓库源:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null安装Docker引擎:
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io验证安装:
sudo docker run hello-world1.2 Docker Compose安装
下载最新版二进制文件(当前v2.17.2):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose设置执行权限:
sudo chmod +x /usr/local/bin/docker-compose验证版本:
docker-compose --version1.3 系统参数调优
调整内核参数以优化容器性能:
cat <<EOF | sudo tee /etc/sysctl.d/docker.conf vm.max_map_count=262144 fs.file-max=65536 EOF sudo sysctl -p /etc/sysctl.d/docker.conf2. Harbor安装与配置
2.1 下载Harbor离线包
访问GitHub Releases页面获取最新版本:
wget https://github.com/goharbor/harbor/releases/download/v2.8.2/harbor-offline-installer-v2.8.2.tgz解压安装包:
tar xzvf harbor-offline-installer-v2.8.2.tgz -C /usr/local/ cd /usr/local/harbor2.2 配置文件修改
复制模板文件并编辑:
cp harbor.yml.tmpl harbor.yml nano harbor.yml关键配置示例:
hostname: harbor.yourdomain.com http: port: 8080 https: port: 443 certificate: /path/to/your/cert.crt private_key: /path/to/your/cert.key harbor_admin_password: YourStrongPassword123 database: password: root123 data_volume: /data/harbor安全提示:生产环境必须启用HTTPS,可使用Let's Encrypt免费证书或企业级CA证书
2.3 执行安装脚本
运行安装程序:
sudo ./install.sh安装成功后会自动启动以下服务:
- harbor-core:核心服务
- harbor-portal:Web界面
- registry:Docker Registry服务
- redis:缓存服务
- postgresql:数据库服务
验证服务状态:
docker-compose ps3. Harbor高级配置
3.1 配置系统服务
创建systemd服务文件:
cat <<EOF | sudo tee /etc/systemd/system/harbor.service [Unit] Description=Harbor Service After=docker.service systemd-networkd.service systemd-resolved.service Requires=docker.service Documentation=https://goharbor.io [Service] Type=simple WorkingDirectory=/usr/local/harbor ExecStart=/usr/local/bin/docker-compose -f /usr/local/harbor/docker-compose.yml up ExecStop=/usr/local/bin/docker-compose -f /usr/local/harbor/docker-compose.yml down Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target EOF启用服务:
sudo systemctl enable harbor sudo systemctl start harbor3.2 配置Nginx反向代理(可选)
安装Nginx:
sudo apt install -y nginx创建代理配置:
cat <<EOF | sudo tee /etc/nginx/conf.d/harbor.conf server { listen 80; server_name harbor.yourdomain.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } EOF测试并重载配置:
sudo nginx -t && sudo systemctl reload nginx4. 日常运维管理
4.1 数据备份策略
备份数据库:
docker exec -it harbor-db pg_dump -U postgres registry > registry_backup.sql备份配置文件:
tar czvf harbor_config_backup.tar.gz /usr/local/harbor/harbor.yml /usr/local/harbor/data4.2 版本升级步骤
- 停止当前服务:
cd /usr/local/harbor && docker-compose down- 备份数据和配置:
cp -r /data/harbor /data/harbor_backup- 下载新版本并解压:
wget https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz tar xzvf harbor-offline-installer-v2.8.3.tgz -C /usr/local/- 迁移配置:
cp /usr/local/harbor_backup/harbor.yml /usr/local/harbor/- 运行升级脚本:
./prepare && ./install.sh4.3 常见问题排查
问题1:端口冲突
netstat -tulnp | grep 80 sudo lsof -i :443问题2:磁盘空间不足
docker system df docker volume prune问题3:证书过期
openssl x509 -in /path/to/cert.crt -noout -dates5. 安全加固建议
5.1 访问控制配置
- 启用项目配额管理
- 配置LDAP/AD集成认证
- 设置镜像扫描定时任务
- 开启内容信任(Notary)功能
5.2 网络隔离方案
# 创建专用网络 docker network create --subnet=172.28.0.0/16 harbor-net # 修改docker-compose.yml services: registry: networks: - harbor-net5.3 日志审计配置
修改harbor.yml:
log: level: info local: rotate_count: 50 rotate_size: 200M location: /var/log/harbor配置日志轮转:
cat <<EOF | sudo tee /etc/logrotate.d/harbor /var/log/harbor/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 root root } EOF我在实际生产环境部署中发现,合理配置资源限制能显著提升稳定性。建议在docker-compose.yml中为关键服务添加如下限制:
services: core: deploy: resources: limits: cpus: '2' memory: 4G