0Pricing
DevOps Bootcamp · 课时

将镜像推送到镜像仓库

配置工作流,将构建好的 Docker 镜像推送到 Docker Hub 或 GitHub Container Registry 等容器镜像仓库

将镜像推送到镜像仓库 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

什么是容器镜像仓库?

容器镜像仓库是用于安全在线存储 Docker 镜像的服务。您可以把它看作专为应用程序软件包设计的云盘。

  • 它们可以存储镜像的不同版本。
  • 它们可以让您轻松与他人共享镜像。
  • 它们对于将应用程序部署到各种环境至关重要。

为什么使用镜像仓库?

镜像仓库是现代软件开发不可或缺的一部分。它们提供了以下重要优势:

  • 镜像共享:轻松分发应用程序镜像。
  • 版本控制:存储和管理应用程序的不同版本。
  • 可靠部署:确保在不同环境中进行一致的部署。
  • 安全性:许多镜像仓库提供漏洞扫描功能。

常见镜像仓库服务

目前有许多容器镜像仓库服务可供使用。您经常会遇到的两种常用服务是:

  • Docker Hub:广泛使用的公共镜像仓库,非常适合共享公共镜像和个人项目。
  • GitHub Container Registry (GHCR):与 GitHub 仓库紧密集成,非常适合存储私有镜像,以及已经在使用 GitHub 的组织。

其他主要云服务提供商也提供自己的镜像仓库,例如 AWS ECR 或 Google Container Registry。

镜像仓库身份验证

在向镜像仓库推送镜像之前,您需要证明自己的身份。这个过程称为身份验证

通常,您需要提供用户名和个人访问令牌(PAT)或密码。这些凭据可确保只有获得授权的用户才能从私有仓库推送或拉取镜像。

使用 docker/login-action

在 GitHub Actions 中,与大多数兼容 Docker 的镜像仓库进行身份验证的最佳方式是使用 docker/login-action。

此操作会安全地让您的工作流登录指定的镜像仓库,使后续步骤能够推送镜像。它接受 username 和 password 作为输入项。

推送到 Docker Hub

要将镜像推送到 Docker Hub,您的工作流需要执行以下操作:

  1. 登录:使用 docker/login-action,并提供您的 Docker Hub 用户名以及存储为 GitHub 密钥的个人访问令牌(PAT)。
  2. 构建并推送:使用 docker/build-push-action 构建镜像,并将 push: true 设置为启用。请确保镜像标记包含您的 Docker Hub 用户名,例如 your_username/my-app:latest。

Docker Hub 工作流示例

下面是一个将 Docker 镜像构建并推送到 Docker Hub 的 GitHub Actions 工作流示例。请记得在仓库中将 DOCKER_USERNAME 和 DOCKER_TOKEN 设置为 GitHub 密钥。

name: Publish Docker image to Docker Hub

on:
  push:
    branches: [ "main" ]

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Log in to Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_TOKEN }}

      - name: Build and push Docker image
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ${{ secrets.DOCKER_USERNAME }}/my-app:latest

推送到 GHCR

GitHub Container Registry (GHCR) 提供了无缝集成。GHCR 的主要区别包括:

  • 身份验证:您可以使用内置的 GITHUB_TOKEN 进行身份验证。设置 username: ${{ github.actor }} 和 password: ${{ secrets.GITHUB_TOKEN }}。
  • 权限:您的作业需要 packages: write 权限。
  • 镜像标记:镜像的标记格式为 ghcr.io/<OWNER>/<REPOSITORY>:<TAG>。

GHCR 工作流示例

此工作流演示了如何将镜像推送到 GitHub Container Registry。请注意其中的 permissions 块和镜像标记格式。

name: Publish Docker image to GHCR

on:
  push:
    branches: [ "main" ]

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write # Required for GHCR

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Log in to GHCR
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Build and push Docker image
        uses: docker/build-push-action@v5
        with:
          context: .
          push: true
          tags: ghcr.io/${{ github.repository }}:latest

检查您的理解

让我们快速回顾一下您已经学到的将镜像推送到容器注册表的知识。

回顾:推送您的镜像!

做得很好!您已经学会了如何使用 GitHub Actions 将 Docker 镜像推送到容器注册表。

  • 容器注册表用于存储和管理您的 Docker 镜像。
  • 使用凭据进行身份验证是至关重要的第一步。
  • docker/login-action 可帮助您安全地登录。
  • 您看到了 Docker Hub 和 GitHub Container Registry 的示例,并了解了它们各自独特的身份验证和标记要求。

接下来,您将学习如何将这些镜像部署到 Kubernetes!

常见问题解答

「将镜像推送到镜像仓库」课时是免费的吗?

是的 — 「将镜像推送到镜像仓库」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「将镜像推送到镜像仓库」这节课中我会学到什么?

配置工作流,将构建好的 Docker 镜像推送到 Docker Hub 或 GitHub Container Registry 等容器镜像仓库 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「将镜像推送到镜像仓库」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 Actions 构建 Docker 镜像
  2. 将镜像推送到镜像仓库
  3. 使用 Actions 部署到 Kubernetes
  4. 持续集成与持续交付中的 Helm Chart 和 Kubernetes 清单
← 返回 DevOps Bootcamp