关于 docker-hub
docker-hub 是一项管理 Docker 镜像仓库的指导型技能,面向发布、拉取和维护镜像的开发者。内容涵盖公共与私有仓库操作、标签策略、摘要固定及常见认证问题;不提供镜像构建。
主要功能
- 01仓库登录与镜像推送、拉取
- 02管理镜像标签与版本策略
- 03使用摘要固定镜像版本
- 04搭建 Docker Registry 或 Harbor
- 05排查认证与推送问题
适用场景
- 01向公共仓库发布应用镜像
- 02配置私有 Registry 或 Harbor
- 03为生产镜像选择固定标签或摘要
- 04处理 CI 中的仓库认证
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ full-stack-skills/ docker-skills --skill docker-hub安装后在 Claude Code 中输入/docker-hub确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlexamples/01-push-image.md02-private-registry.mdreferences/01-tag-strategy.md02-harbor-setup.md详细介绍
Docker Hub — 镜像仓库管理
发布、拉取和管理 Docker 镜像的指南。
适用场景
用户提及以下内容时,务必使用此技能:
- “docker hub”、“docker registry”、“镜像仓库”
- “docker push”、“docker pull”、“docker tag”
- “私有仓库”、“private registry”、“Harbor”
- “镜像加速”、“registry mirror”
- “docker login”、“身份验证”
核心工作流
# Login
docker login
docker login registry.example.com # Private registry
# Tag
docker tag myapp:latest myuser/myapp:v1.0.0
docker tag myapp:latest myuser/myapp:latest
# Push
docker push myuser/myapp:v1.0.0
docker push myuser/myapp:latest
# Pull
docker pull myuser/myapp:v1.0.0
docker pull myuser/myapp:latest
标签策略
| 标签 | 用途 | 保留期限 |
|---|---|---|
v1.2.3 | 精确版本(semver) | 永久 |
v1.2 | 最新小版本 | 直到下一个小版本 |
v1 | 最新大版本 | 直到下一个大版本 |
latest | 最新构建(仅限开发环境!) | 滚动更新 |
sha256-abc123 | 固定摘要 | 按需 |
Production: NEVER use :latest. Always pin exact version or digest.
Development: :latest is OK for convenience.
私有仓库
Docker Registry(官方)
docker run -d -p 5000:5000 --name registry \
-v registry:/var/lib/registry \
registry:2
docker tag myapp localhost:5000/myapp:v1
docker push localhost:5000/myapp:v1
Harbor(企业版)
# Download and run
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz
tar xzf harbor-offline-installer-v2.10.0.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
# Edit harbor.yml (hostname, passwords)
./install.sh
镜像摘要(不可变引用)
# Get digest
docker inspect --format='{{.RepoDigests}}' myimage:tag
# Pull by digest (immutable)
docker pull alpine@sha256:abc123...
工作流 — 推荐操作流程
步骤 1:登录仓库:docker login 或 docker login ghcr.io
步骤 2:打标签:docker tag myapp:v1 ghcr.io/org/myapp:v1
步骤 3:推送镜像:docker push ghcr.io/org/myapp:v1
步骤 4:验证:拉取 docker pull ghcr.io/org/myapp:v1 进行确认
步骤 5:固定版本:生产环境使用 docker pull myapp@sha256:abc...
注意事项 — 常见问题
- 生产环境使用
:latest:标签可变,latest可能会随时间指向不同的镜像。→ 解决方法:始终固定版本或摘要:docker pull myapp:v1.2.3@sha256:abc...。 - 混用公共与私有仓库:
docker login按仓库分别登录。→ 解决方法:分别执行docker login registry.example.com;使用凭据助手,例如 AWS ECR 的docker-credential-ecr-login。 - 大型镜像推送超时:推送大型镜像时,在守护进程配置中设置
max-concurrent-uploads。→ 解决方法:编辑/etc/docker/daemon.json:对于慢速连接,设置为{"max-concurrent-uploads": 1}。 - CI 中的仓库身份验证:使用
docker/login-action(GitHub Actions)或密钥管理器。→ 解决方法:切勿提交凭据;对于云仓库,使用 OIDC,而非长期令牌。
边界 — 能力范围(适用与不适用场景)
| 分类 | 场景 | 说明 |
|---|---|---|
| ✅ 能做 | 使用公共仓库(Docker Hub/GHCR) | 登录、推送/拉取、标签管理 |
| ✅ 能做 | 搭建私有仓库 | Docker Registry + Harbor 企业方案 |
| ✅ 能做 | 制定标签策略 | 对比并选择 semver/sha256/digest |
| ⚠️ 需条件 | 镜像加速(registry-mirrors) | 需配置 daemon.json + 可用的 mirror 服务 |
| ⚠️ 需条件 | Harbor 高可用部署 | 需额外配置 Redis Cluster + PG 主从 |
| ❌ 超范围 | 镜像构建 | 使用 docker-build |
| ❌ 超范围 | CVE 扫描 | 使用 docker-scout |
| ❌ 超范围 | CI/CD 镜像管理 | 使用 docker-cicd |
不适用场景
| ❌ 跳过 | ✅ 改用 |
|---|---|
| 构建镜像 | docker-build |
| 漏洞扫描 | docker-scout |
| CI/CD 流水线 | docker-cicd |
| Docker 基础知识 | docker-basics |
安全与稳定性
- 切勿提交仓库凭据。请使用 CI 密钥管理器。
- 使用内容信任:为已签名镜像设置
export DOCKER_CONTENT_TRUST=1。 - Harbor 提供漏洞扫描、复制和 RBAC。
- 不附带可执行脚本,仅提供指南。
📚 官方文档参考
| 文档 | 地址 |
|---|---|
| Docker Hub | https://docs.docker.com/docker-hub/ |
| Docker Hub API | https://docs.docker.com/reference/api/hub/latest/ |
| Docker Registry | https://docs.docker.com/registry/ |
| Harbor 项目 | https://goharbor.io/ |
| 镜像管理 CLI | https://docs.docker.com/reference/cli/docker/image/ |
| 内容信任 | https://docs.docker.com/engine/security/trust/ |
🧭 Docker Skills Journey
📍 你在这里:
docker-hub— 镜像仓库管理
← 上一项:docker-scout — 漏洞扫描
→ 下一项:docker-cicd — CI/CD 集成
常见问题
Q1:如何快速上手此技能? A:参考上方的快速开始章节,按步骤操作即可。
Q2:遇到版本不兼容问题怎么办? A:检查依赖版本,使用 lock 文件锁定,并参考常见问题章节。
Q3:如何在生产环境中使用? A:参考最佳实践章节,确保配置正确,并做好监控和日志记录。
Q4:如何优化性能? A:参考性能优化相关文档,使用缓存、索引等手段。
Q5:如何贡献或反馈问题? A:在 GitHub 仓库提交 Issue 或 Pull Request。
Q6:是否支持中文? A:支持中文文档和中文注释,详见国内适配章节。