🌟镜像操作核心原理
① Harbor镜像命名规范
[仓库地址]/[项目名]/[镜像名]:[标签] # 示例 192.168.145.129:80/dev-team/nginx:v1.8
⚠️ 关键点:
-
必须包含项目名(如
dev-team
) -
默认库项目名为
library
(可省略)
② 操作流程全景图
③ 权限验证机制
🔑 每次操作需通过:
docker login [Harbor地址] -u [用户] -p [密码]
凭证自动保存到~/.docker/config.jso~/.docker/config.jsonn
🛠️四步镜像操作指南
① 准备测试镜像
# 拉取官方镜像 docker pull nginx:1.25-alpine # 创建测试镜像 docker tag nginx:1.25-alpine my-nginx:v1
② 打Harbor专属标签
# 格式:docker tag [源镜像] [Harbor路径]/[项目]/[镜像名]:[标签] docker tag my-nginx:v1 192.168.145.129:80/dev-project/nginx:prod-v1
✅ 验证标签:
docker images | grep nginx # 输出: # 192.168.145.129:80/dev-project/nginx prod-v1 501d84f5d064 13 months ago 48.3MB
③ 推送镜像到Harbor
# 登录Harbor(首次操作需执行) docker login 192.168.145.129:80 -u dev-user -p [密码] # 推送镜像 docker push 192.168.145.129:80/dev-project/nginx:prod-v1
📌 成功标志:
prod-v1: Pushed latest: digest: sha256:61c... size: 1989
④ 从Harbor拉取镜像
# 新机器首次操作 docker login 192.168.145.129:80 -u readonly-user -p [密码] # 拉取镜像 docker pull 192.168.145.129:80/dev-project/nginx:prod-v1 # 运行测试 docker run -d-p8088:80 192.168.145.129:80/dev-project/nginx:prod-v1
🔍【高阶操作】
① 批量推送镜像脚本
#!/bin/bash IMAGES=("nginx:1.25""redis:7.0""mysql:8.0") for img in"${IMAGES[@]}" do docker pull $img docker tag $img192.168.145.129:80/base-library/${img%%:*} docker push 192.168.145.129:80/base-library/${img%%:*} done
② 镜像删除与回收
# 需项目维护人员权限 docker rmi 192.168.145.129:80/dev-project/nginx:prod-v1 # Harbor网页端操作: 1. 进入项目 → 镜像仓库 2. 选择目标镜像 → 删除
🚨【故障排查】
❌ 错误1:x509: certificate signed by unknown authority
解决方案:
# 添加Harbor证书到Docker信任列表 mkdir-p /etc/docker/certs.d/192.168.145.129:443 scp harbor-server:/data/cert/server.crt /etc/docker/certs.d/192.168.145.129:443/ systemctl restart docker
❌ 错误2:denied: requested access to the resource is denied
原因分析:
-
用户未加入项目
-
角色权限不足(如访客尝试推送)解决步骤:
-
Harbor控制台 → 项目 → 成员 → 添加用户
-
分配维护人员以上角色
💡【最佳实践】
镜像命名规范
[项目]/[环境]-[服务名]-[版本] 示例: order-service/prod-payment-api-v3.2