Skip to content

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 网页上创建:

  1. 登录 hub.docker.com
  2. 点击 Create Repository
  3. 填写名称和描述
  4. 选择 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 使用要点:

  1. 使用 Access Token 而非密码进行 CI/CD 登录
  2. 固定镜像版本,避免使用 latest 在生产环境
  3. 私有镜像超过 1 个需要付费,生产环境考虑自建仓库
  4. 多平台镜像使用 docker buildx 构建
  5. CI/CD 自动推送使用 GitHub Actions 等工具

下一节介绍如何搭建私有镜像仓库。