Appearance
Docker Hub
Docker Hub 是 Docker 官方的公共镜像仓库,托管了数百万个镜像,是使用 Docker 不可绕过的重要服务。
注册和登录
注册账号
访问 hub.docker.com 注册免费账号。
命令行登录
bash
# 登录 Docker Hub
docker login
# 输入用户名和密码
# Username: your-username
# Password: your-password
# 使用参数登录(CI/CD 环境)
docker login -u your-username -p your-password
# 使用访问令牌登录(更安全,推荐)
docker login -u your-username --password-stdin <<< "your-access-token"
# 退出登录
docker logout安全建议:在 CI/CD 中使用 Docker Hub 的 Access Token 而非账号密码。在 Docker Hub → Account Settings → Security → New Access Token 创建。
搜索镜像
bash
# 搜索镜像
docker search nginx
# 只显示官方镜像
docker search --filter is-official=true nginx
# 按 Stars 排序(前 5 个)
docker search --limit 5 nginx
# 过滤 Stars 数量
docker search --filter stars=100 nginx拉取镜像
bash
# 拉取最新版本
docker pull nginx
# 拉取指定版本
docker pull nginx:1.25-alpine
# 拉取所有标签
docker pull -a nginx
# 查看已拉取的镜像
docker images nginx推送自定义镜像
构建并推送
bash
# 1. 构建镜像(使用正确的命名格式:用户名/镜像名:标签)
docker build -t yourusername/myapp:1.0 .
# 2. 推送到 Docker Hub
docker push yourusername/myapp:1.0
# 同时推送 latest 标签
docker tag yourusername/myapp:1.0 yourusername/myapp:latest
docker push yourusername/myapp:latest多平台构建推送
bash
# 使用 buildx 构建多平台镜像
docker buildx create --use --name multiplatform
# 构建并推送多平台镜像(同时支持 amd64 和 arm64)
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t yourusername/myapp:1.0 \
--push \
.管理镜像仓库
创建仓库
在 Docker Hub 网页上创建:
- 登录 hub.docker.com
- 点击 Create Repository
- 填写名称和描述
- 选择 Public(公开)或 Private(私有)
仓库类型
| 类型 | 免费数量 | 说明 |
|---|---|---|
| Public(公开) | 无限 | 所有人可拉取 |
| Private(私有) | 1 个(免费账号) | 需要登录才能拉取 |
自动构建(已迁移至 GitHub Actions)
Docker Hub 的自动构建功能现已需要付费,推荐使用 GitHub Actions 替代:
yaml
# .github/workflows/docker-publish.yml
name: Publish Docker Image
on:
push:
branches: [main]
tags: ['v*']
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: |
yourusername/myapp:latest
yourusername/myapp:${{ github.sha }}Docker Hub 镜像命名规范
[registry-host/][username/]image-name[:tag]
# 官方镜像(无用户名前缀)
nginx
mysql:8.0
node:20-alpine
# 用户/组织镜像
bitnami/postgresql
grafana/grafana
# 自定义镜像
yourusername/myapp:1.0
yourorg/frontend:v2.3.1镜像标签规范
bash
# 按版本
yourusername/myapp:1.0.0
yourusername/myapp:1.0
yourusername/myapp:1
yourusername/myapp:latest
# 按环境
yourusername/myapp:prod
yourusername/myapp:staging
# 按 Git commit
yourusername/myapp:abc1234
# 带平台信息
yourusername/myapp:1.0-alpine
yourusername/myapp:1.0-slim官方镜像的使用建议
bash
# 查看官方镜像的所有可用标签
# 在 Docker Hub 网页上查看:https://hub.docker.com/_/nginx/tags
# 常用官方镜像推荐版本
docker pull nginx:alpine # 最新稳定 Alpine 版
docker pull node:20-alpine # Node.js 20 LTS Alpine
docker pull python:3.12-slim # Python 3.12 Slim
docker pull mysql:8.0 # MySQL 8.0
docker pull postgres:16-alpine # PostgreSQL 16 Alpine
docker pull redis:7-alpine # Redis 7 Alpine
docker pull mongo:7.0 # MongoDB 7.0总结
Docker Hub 使用要点:
- 使用 Access Token 而非密码进行 CI/CD 登录
- 固定镜像版本,避免使用
latest在生产环境 - 私有镜像超过 1 个需要付费,生产环境考虑自建仓库
- 多平台镜像使用
docker buildx构建 - CI/CD 自动推送使用 GitHub Actions 等工具
下一节介绍如何搭建私有镜像仓库。