构建并推送您的第一个镜像

解释

现在您已经更新了待办事项列表应用,您可以为该应用创建一个容器镜像并将其分享到 Docker Hub 上。为此,您需要执行以下操作:

  1. 使用您的 Docker 账户登录
  2. 在 Docker Hub 上创建一个镜像仓库
  3. 构建容器镜像
  4. 将镜像推送到 Docker Hub

在您开始实践指南之前,您应该了解以下几个核心概念。

容器镜像

如果您是容器镜像的新手,可以将其视为一个标准化的包,其中包含运行应用程序所需的一切,包括其文件、配置和依赖项。这些包可以分发并与他人共享。

Docker Hub

要共享您的 Docker 镜像,您需要一个地方来存储它们。这就是注册中心(registries)的作用。虽然有许多注册中心,但 Docker Hub 是默认和首选的镜像注册中心。Docker Hub 不仅为您提供存储自己镜像的地方,还让您能找到他人的镜像,以便直接运行或作为自己镜像的基础。

使用容器进行开发中,您使用了以下来自 Docker Hub 的镜像,它们都是Docker 官方镜像

  • node - 提供一个 Node 环境,并用作您开发工作的基础。该镜像也用作最终应用程序镜像的基础。
  • mysql - 提供一个 MySQL 数据库来存储待办事项列表项
  • phpmyadmin - 提供 phpMyAdmin,一个用于 MySQL 数据库的基于 Web 的界面
  • traefik - 提供 Traefik,一个现代化的 HTTP 反向代理和负载均衡器,可根据路由规则将请求路由到适当的容器

探索Docker 官方镜像Docker 认证发布者Docker 赞助的开源软件镜像的完整目录,以了解更多可以运行和构建的内容。

试一试

在这个实践指南中,您将学习如何登录 Docker Hub 并将镜像推送到 Docker Hub 仓库。

使用您的 Docker 账户登录

要将镜像推送到 Docker Hub,您需要使用 Docker 账户登录。

  1. 打开 Docker Dashboard。

  2. 选择右上角的登录

  3. 如果需要,请创建一个账户,然后完成登录流程。

完成后,您应该会看到登录按钮变成一个个人资料图片。

创建一个镜像仓库

现在您有了一个账户,可以创建一个镜像仓库。就像 Git 仓库保存源代码一样,镜像仓库存储容器镜像。

  1. 前往 Docker Hub

  2. 选择 创建仓库

  3. 创建仓库页面,输入以下信息

    • 仓库名称 - getting-started-todo-app
    • 简短描述 - 如果愿意,可以随意输入描述
    • 可见性 - 选择公开以允许其他人拉取您定制的待办事项应用
  4. 选择创建以创建仓库。

构建并推送镜像

现在您有了一个仓库,可以开始构建和推送您的镜像了。需要注意的是,您正在构建的镜像扩展了 Node 镜像,这意味着您不需要安装或配置 Node、yarn 等。您只需关注让您的应用程序与众不同的地方。

什么是镜像/Dockerfile?

暂不深入探讨,您可以将容器镜像看作是一个包含运行进程所需一切的单一软件包。在本例中,它将包含一个 Node 环境、后端代码和已编译的 React 代码。

任何使用该镜像运行容器的机器,都将能够像构建时一样运行该应用程序,而无需在机器上预安装任何其他东西。

Dockerfile 是一个基于文本的脚本,提供了如何构建镜像的指令集。对于这个快速入门,仓库中已经包含了 Dockerfile。

  1. 要开始,请将项目克隆或以 ZIP 文件形式下载到您的本地计算机。

    $ git clone https://github.com/docker/getting-started-todo-app
    

    项目克隆后,导航到克隆创建的新目录中

    $ cd getting-started-todo-app
    
  2. 通过运行以下命令来构建项目,将 DOCKER_USERNAME 替换为您的用户名。

    $ docker build -t <DOCKER_USERNAME>/getting-started-todo-app .
    

    例如,如果您的 Docker 用户名是 mobydock,您将运行以下命令

    $ docker build -t mobydock/getting-started-todo-app .
    
  3. 要验证镜像在本地是否存在,您可以使用 docker image ls 命令

    $ docker image ls
    

    您将看到类似以下的输出

    REPOSITORY                          TAG       IMAGE ID       CREATED          SIZE
    mobydock/getting-started-todo-app   latest    1543656c9290   2 minutes ago    1.12GB
    ...
    
  4. 要推送镜像,请使用 docker push 命令。请务必将 DOCKER_USERNAME 替换为您的用户名

    $ docker push <DOCKER_USERNAME>/getting-started-todo-app
    

    根据您的上传速度,推送可能需要一些时间。

  1. 打开 Visual Studio Code。确保您已从扩展市场安装了Docker VS Code 扩展

    Screenshot of VS code extension marketplace
  2. 文件菜单中,选择打开文件夹。选择克隆 Git 仓库并粘贴此 URL:https://github.com/docker/getting-started-todo-app

    Screenshot of VS code showing how to clone a repository
  3. 右键单击 Dockerfile 并选择构建镜像... 菜单项。

    Screenshot of VS Code showing the right-click menu and "Build Image" menu item
  4. 在出现的对话框中,输入名称 DOCKER_USERNAME/getting-started-todo-app,并将 DOCKER_USERNAME 替换为您的 Docker 用户名。

  5. 回车后,您会看到一个终端出现,构建将在其中进行。完成后,可以随意关闭终端。

  6. 通过选择左侧导航菜单中的 Docker 徽标打开 VS Code 的 Docker 扩展。

  7. 找到您创建的镜像。它的名称将是 docker.io/DOCKER_USERNAME/getting-started-todo-app

  8. 展开镜像以查看镜像的标签(或不同版本)。您应该会看到一个名为 latest 的标签,这是给镜像的默认标签。

  9. 右键单击 latest 项并选择 Push... 选项。

    Screenshot of the Docker Extension and the right-click menu to push an image
  10. 回车确认,然后观看您的镜像被推送到 Docker Hub。根据您的上传速度,推送镜像可能需要一些时间。

    上传完成后,您可以关闭终端。

回顾

在继续之前,花点时间回顾一下这里发生的事情。在短短几分钟内,您就能够构建一个打包了您的应用程序的容器镜像,并将其推送到 Docker Hub。

展望未来,您需要记住的是

  • Docker Hub 是寻找可信内容的首选注册中心。Docker 提供了一系列可信内容,包括 Docker 官方镜像、Docker 认证发布者和 Docker 赞助的开源软件,可以直接使用或作为您自己镜像的基础。

  • Docker Hub 提供了一个分发您自己应用程序的市场。任何人都可以创建一个账户并分发镜像。虽然您公开分发了您创建的镜像,但私有仓库可以确保您的镜像只能被授权用户访问。

其他注册中心的使用

虽然 Docker Hub 是默认的注册中心,但注册中心通过开放容器倡议(Open Container Initiative)实现了标准化和互操作性。这使得公司和组织可以运行自己的私有注册中心。通常,可信内容会从 Docker Hub 镜像(或复制)到这些私有注册中心。

后续步骤

既然您已经构建了一个镜像,现在是时候讨论一下为什么您作为一名开发人员应该更多地了解 Docker,以及它将如何在您的日常工作中帮助您。

下一步是什么
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.