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

解释

现在,您已经更新了待办事项列表应用程序,您可以为应用程序创建容器镜像并在 Docker Hub 上共享它。为此,您需要执行以下操作:

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

在深入研究实践指南之前,以下是您应该了解的一些核心概念。

容器镜像

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

Docker 中心

要共享 Docker 镜像,您需要一个存储它们的地方。这就是注册管理机构的用武之地。虽然有许多注册表,但 Docker Hub 是镜像的默认和首选注册表。Docker Hub 为您提供了一个存储自己的镜像和查找来自其他人的镜像以运行或用作您自己的镜像基础的地方。

使用容器开发 中,您使用了以下来自 Docker Hub 的镜像,每个镜像都是 Docker 官方镜像

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

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

试用

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

使用您的 Docker 帐户登录

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

  1. 打开 Docker 仪表板。

  2. 选择右上角的 Sign in (登录)。

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

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

创建镜像仓库

现在,您已拥有账户,可以创建镜像存储库。就像 Git 存储库包含源代码一样,镜像存储库存储容器镜像。

  1. 转到 Docker Hub

  2. 选择 Create repository(创建存储库)。

  3. Create repository (创建存储库) 页面上,输入以下信息:

    • 存储库名称 - getting-started-todo-app
    • 简短描述 - 如果您愿意,请随时输入描述
    • 可见性 - 选择 Public 以允许其他人提取您的自定义待办事项应用程序
  4. 选择 Create (创建) 以创建存储库。

构建并推送镜像

现在,您已拥有存储库,可以构建和推送镜像。一个重要的注意事项是,您正在构建的镜像扩展了 Node 镜像,这意味着您不需要安装或配置 Node、yarn 等。您可以只关注使您的应用程序独一无二的原因。

什么是镜像/Dockerfile?

在不深入的情况下,将容器镜像视为包含 运行进程所需的一切。在这种情况下,它将包含一个 Node 环境 后端代码和编译后的 React 代码。

然后,任何使用该镜像运行容器的计算机都将能够以 它是在机器上不需要预装任何其他东西的情况下构建的。

A 是一个基于文本的脚本,它提供有关如何构建的指令集 镜像。对于此快速入门,存储库已包含 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 pushDOCKER_USERNAME

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

    根据您的上传速度,这可能需要一些时间才能完成。

  1. 打开 Visual Studio Code。在 File (文件) 菜单中,选择 Open Folder (打开文件夹)。选择 Clone Git Repository (克隆 Git 存储库) 并粘贴以下 URL:https://github.com/docker/getting-started-todo-app

    显示如何克隆存储库的 VS 代码屏幕截图
  2. 右键单击 并选择 Build Image... 菜单项。Dockerfile

    显示右键单击菜单和“Build Image”菜单项的 VS Code 屏幕截图
  3. 在显示的对话框中,输入名称 ,替换为您的 Docker 用户名。DOCKER_USERNAME/getting-started-todo-appDOCKER_USERNAME

  4. Enter 键后,您将看到一个终端,将在构建发生的位置出现。完成后,请随时关闭终端。

  5. 通过在左侧导航菜单中选择 Docker 徽标,打开适用于 VS Code 的 Docker 扩展。

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

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

  8. 右键单击最新项目,然后选择 Push... 选项。

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

    上传完成后,请随时关闭终端。


回顾

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

展望未来,您需要记住:

  • Docker Hub 是查找受信任内容的首选注册表。Docker 提供了一组可信内容,由 Docker 官方镜像、Docker 验证发布者和 Docker 赞助的开源软件组成,可以直接使用或用作您自己的镜像的基础。

  • Docker Hub 提供了一个市场来分发您自己的应用程序。任何人都可以创建帐户并分发镜像。当您公开分发您创建的镜像时,私有存储库可以确保只有授权用户才能访问您的镜像。

其他注册管理机构的使用

虽然 Docker Hub 是默认注册表,但注册表是标准化的 可通过 Open Container Initiative 进行互操作。这允许公司和 组织运行自己的私有注册表。很多时候,可信内容 从 Docker Hub 镜像(或复制)到这些私有注册表中。

后续步骤

现在您已经构建了一个镜像,是时候讨论为什么作为开发人员应该了解有关 Docker 的更多信息,以及它将如何帮助您完成日常任务。