Docker Hub #
什么是Docker Hub? #
Docker Hub是Docker官方提供的公共镜像仓库服务,是全球最大的容器镜像库。
Docker Hub功能 #
text
┌─────────────────────────────────────────────────────┐
│ Docker Hub功能 │
├─────────────────────────────────────────────────────┤
│ │
│ 1. 镜像存储 - 存储和分发Docker镜像 │
│ 2. 自动构建 - GitHub/Bitbucket集成自动构建 │
│ 3. Webhooks - 镜像更新通知 │
│ 4. 组织管理 - 团队协作管理 │
│ 5. 官方镜像 - 经过验证的官方镜像 │
│ 6. 安全扫描 - 镜像漏洞扫描 │
│ │
└─────────────────────────────────────────────────────┘
注册与登录 #
创建账户 #
- 访问 https://hub.docker.com
- 点击 Sign Up 注册账户
- 验证邮箱地址
命令行登录 #
bash
# 登录Docker Hub
docker login
# 输入用户名和密码
Username: your-username
Password: your-password
# 登录成功
Login Succeeded
# 使用访问令牌登录(推荐)
docker login -u your-username
Password: your-access-token
创建访问令牌 #
- 登录Docker Hub
- 进入 Account Settings → Security
- 点击 New Access Token
- 设置权限: Read/Write/Delete
bash
# 使用令牌登录
echo your-access-token | docker login -u your-username --password-stdin
登出 #
bash
# 登出Docker Hub
docker logout
镜像管理 #
推送镜像 #
bash
# 标记镜像
docker tag myapp:v1.0 username/myapp:v1.0
# 推送镜像
docker push username/myapp:v1.0
# 推送所有标签
docker push username/myapp
拉取镜像 #
bash
# 拉取镜像
docker pull username/myapp:v1.0
# 拉取最新版本
docker pull username/myapp:latest
# 拉取所有标签
docker pull -a username/myapp
删除镜像 #
bash
# 在Docker Hub网页上删除
# 或使用API删除
curl -X DELETE \
-H "Authorization: JWT <token>" \
https://hub.docker.com/v2/repositories/username/myapp/tags/v1.0/
镜像标签管理 #
标签命名规范 #
bash
# 推荐的标签格式
username/myapp:v1.0.0 # 语义化版本
username/myapp:v1.0 # 次版本
username/myapp:v1 # 主版本
username/myapp:latest # 最新版本
username/myapp:v1.0.0-alpine # 带变体标识
多标签管理 #
bash
# 添加多个标签
docker tag myapp:v1.0 username/myapp:v1.0.0
docker tag myapp:v1.0 username/myapp:v1.0
docker tag myapp:v1.0 username/myapp:v1
docker tag myapp:v1.0 username/myapp:latest
# 推送所有标签
docker push username/myapp
自动化构建 #
连接代码仓库 #
- 登录Docker Hub
- 进入 Repositories → Create → Create Automated Build
- 选择 GitHub 或 Bitbucket
- 授权访问代码仓库
- 选择要构建的仓库
配置构建规则 #
text
┌─────────────────────────────────────────────────────┐
│ 构建规则配置 │
├─────────────────────────────────────────────────────┤
│ │
│ Source Type: Branch │
│ Source: main │
│ Docker Tag: latest │
│ Dockerfile Location: / │
│ Build Caching: Enabled │
│ │
│ Source Type: Tag │
│ Source: /^v([0-9.]+)$/ │
│ Docker Tag: {\1} │
│ │
└─────────────────────────────────────────────────────┘
构建触发器 #
bash
# 获取触发器URL
# 在Repository Settings → Build Triggers中创建
# 触发构建
curl -H "Content-Type: application/json" \
--data '{"build": true}' \
-X POST https://hub.docker.com/api/build/v1/source/xxx/trigger/xxx/call/
Webhooks #
配置Webhooks #
- 进入 Repository Settings → Webhooks
- 添加Webhook URL
- 选择触发事件
Webhook事件 #
json
{
"push_data": {
"images": [
"sha256:xxx"
],
"pushed_at": 1234567890,
"pusher": "username",
"tag": "latest"
},
"repository": {
"comment_count": 0,
"date_created": 1234567890,
"description": "My App",
"full_description": "Full description",
"is_official": false,
"is_private": false,
"name": "myapp",
"namespace": "username",
"owner": "username",
"repo_name": "username/myapp",
"star_count": 0,
"status": "Active"
}
}
组织管理 #
创建组织 #
- 登录Docker Hub
- 点击 Organizations → Create Organization
- 设置组织名称和计划
团队管理 #
bash
# 创建团队
# 在组织设置中创建团队
# 添加成员
# 邀请用户加入团队
# 设置权限
# Read/Write/Admin
仓库权限 #
| 角色 | 权限 |
|---|---|
| Read | 拉取镜像 |
| Write | 推送镜像 |
| Admin | 完全控制 |
官方镜像 #
查找官方镜像 #
bash
# 搜索官方镜像
docker search --filter is-official=true nginx
# 拉取官方镜像
docker pull nginx
docker pull mysql
docker pull redis
官方镜像特点 #
text
┌─────────────────────────────────────────────────────┐
│ 官方镜像特点 │
├─────────────────────────────────────────────────────┤
│ │
│ 1. Docker官方维护 │
│ 2. 安全扫描 │
│ 3. 最佳实践 │
│ 4. 定期更新 │
│ 5. 详细文档 │
│ 6. 多架构支持 │
│ │
└─────────────────────────────────────────────────────┘
镜像安全 #
安全扫描 #
bash
# Docker Hub自动扫描推送的镜像
# 在Repository页面查看扫描结果
# 使用docker scout
docker scout quickview username/myapp:v1.0
docker scout cves username/myapp:v1.0
安全最佳实践 #
bash
# 1. 使用官方基础镜像
FROM nginx:alpine
# 2. 指定版本标签
FROM nginx:1.25.0-alpine
# 3. 定期更新基础镜像
docker pull nginx:alpine
# 4. 扫描镜像漏洞
docker scout quickview myapp:v1.0
# 5. 使用最小化镜像
FROM alpine:3.18
使用限制 #
免费账户限制 #
| 限制项 | 免费账户 | Pro账户 |
|---|---|---|
| 私有仓库 | 1个 | 无限 |
| 拉取次数 | 100次/6小时 | 5000次/天 |
| 自动构建 | 有限 | 无限 |
| 团队成员 | 1人 | 无限 |
避免限制 #
bash
# 使用镜像缓存
docker pull myregistry.com/nginx
# 使用代理镜像
docker pull mirror.ccs.tencentyun.com/library/nginx
# 自建私有仓库
docker run -d -p 5000:5000 registry:2
小结 #
本节学习了Docker Hub的使用方法:
- 注册与登录
- 镜像推送和拉取
- 镜像标签管理
- 自动化构建配置
- Webhooks配置
- 组织和团队管理
下一步 #
接下来,让我们学习 私有仓库搭建,了解如何搭建自己的Docker镜像仓库。