简介:本文详细介绍Docker Harbor镜像仓库的搭建步骤,涵盖环境准备、安装配置及镜像拉取操作,帮助开发者高效管理私有镜像。
在企业级Docker应用场景中,使用公有镜像仓库(如Docker Hub)存在安全风险和效率问题:
Harbor作为企业级私有镜像仓库解决方案,提供权限控制、镜像复制、漏洞扫描等核心功能,完美解决上述痛点。其架构设计包含核心组件:
# CentOS安装示例sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install docker-ce docker-ce-cli containerd.iosudo systemctl enable --now docker# 安装Docker Composesudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
# 下载Harbor安装包(以2.7.0版本为例)wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgztar xvf harbor-offline-installer-v2.7.0.tgzcd harbor# 修改配置文件harbor.ymlvim harbor.yml# 关键配置项:hostname: registry.example.com # 修改为实际域名或IPhttp:port: 80https: # 生产环境建议启用HTTPScertificate: /path/to/cert.pemprivate_key: /path/to/key.pemharbor_admin_password: Harbor12345 # 初始管理员密码database:password: root123 # 数据库密码
sudo ./install.sh --with-trivy # --with-trivy启用漏洞扫描
安装完成后,通过浏览器访问http://<hostname>,使用默认账号admin和设置的密码登录。
在”System Management” → “Replications”中创建复制规则,实现多地域镜像同步:
# 复制规则配置示例name: prod-to-devsrc_registry:url: https://prod-registry.example.comusername: replicatorpassword: ***dest_registry:url: https://dev-registry.example.comusername: replicatorpassword: ***projects:- library- myapp
通过”Projects” → “Retention”配置自动清理旧镜像:
# 登录Harbor仓库(首次使用需要)docker login registry.example.com# 输入用户名密码(建议使用服务账号而非个人账号)# 拉取镜像docker pull registry.example.com/library/nginx:latest
在CI/CD流水线中配置镜像缓存:
# GitLab CI示例build:stage: buildimage: docker:latestservices:- docker:dindvariables:DOCKER_HOST: tcp://docker:2375DOCKER_BUILDKIT: 1before_script:- docker login registry.example.com -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORDscript:- docker pull registry.example.com/myapp:latest || true # 尝试拉取缓存- docker build --cache-from registry.example.com/myapp:latest -t registry.example.com/myapp:$CI_COMMIT_SHA .- docker push registry.example.com/myapp:$CI_COMMIT_SHA
# 示例:减少最终镜像体积FROM golang:1.21 as builderWORKDIR /appCOPY . .RUN go build -o myappFROM alpine:3.18COPY --from=builder /app/myapp /usr/local/bin/CMD ["myapp"]
构建时指定Harbor作为缓存源:
docker build --cache-from registry.example.com/myapp/builder:latest -t registry.example.com/myapp:latest .
原因:未配置HTTPS证书或自签名证书未被信任
解决方案:
# 方法1:将证书添加到系统信任链(Linux)sudo mkdir -p /etc/docker/certs.d/registry.example.comsudo cp cert.pem /etc/docker/certs.d/registry.example.com/ca.crtsudo systemctl restart docker# 方法2:临时禁用证书验证(不推荐生产环境)echo '{"insecure-registries":["registry.example.com"]}' > /etc/docker/daemon.jsonsudo systemctl restart docker
max_download_rate参数<项目>/<应用>:<版本>格式,如library/nginx:1.25.3通过系统化的Harbor镜像仓库搭建和规范的镜像管理流程,企业可实现:
建议每季度进行一次Harbor健康检查,包括存储空间分析、用户权限审计和复制策略验证,确保镜像仓库持续高效运行。