共享应用程序

现在您已经构建了镜像,可以共享它。要共享 Docker 镜像,您必须使用 Docker 注册表。默认注册表是 Docker Hub,您使用的所有镜像都来自该注册表。

Docker ID

Docker ID 允许您访问 Docker Hub,这是世界上最大的容器镜像库和社区。如果您没有 Docker ID,请免费创建一个 Docker ID

创建仓库

要推送镜像,您首先需要在 Docker Hub 上创建一个存储库。

  1. 注册或登录到 Docker Hub

  2. 选择 Create Repository (创建存储库) 按钮。

  3. 对于存储库名称,请使用 。确保 Visibility (可见性) 为 Public (公共)。getting-started

  4. 选择 创建

在下图中,您可以看到来自 Docker Hub 的示例 Docker 命令。此命令将推送到此存储库。

Docker command with push example

推送镜像

  1. 在命令行中,运行您在 Docker 上看到的命令 枢纽。请注意,您的命令将具有您的 Docker ID,而不是“docker”。例如。docker pushdocker push YOUR-USER-NAME/getting-started

    $ docker push docker/getting-started
    The push refers to repository [docker.io/docker/getting-started]
    An image does not exist locally with the tag: docker/getting-started
    

    为什么会失败?push 命令正在查找名为 的镜像,但 没有找到。如果运行 ,您也不会看到一个。docker/getting-starteddocker image ls

    要解决此问题,您需要标记您构建的现有镜像,以便为其指定其他名称。

  2. 使用命令登录到 Docker Hub。docker login -u YOUR-USER-NAME

  3. 使用命令为镜像指定新名称。替换为您的 Docker ID。docker taggetting-startedYOUR-USER-NAME

    $ docker tag getting-started YOUR-USER-NAME/getting-started
    
  4. 现在再次运行该命令。如果要从 Docker Hub 中,您可以删除该部分,因为您没有向 Image name (镜像名称)。如果您未指定标签,Docker 将使用名为 .docker pushtagnamelatest

    $ docker push YOUR-USER-NAME/getting-started
    

在新实例上运行镜像

现在,您的镜像已构建并推送到注册表中,请尝试在品牌上运行您的应用程序 从未见过此容器镜像的新实例。为此,您将使用 Play with Docker。

注意

Play with Docker 使用 amd64 平台。如果您使用的是基于 ARM 且带有 Apple 芯片的 Mac,则需要重新构建镜像以与 Play with Docker 兼容,并将新镜像推送到您的存储库。

要为 amd64 平台构建镜像,请使用 flag。--platform

$ docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .

Docker buildx 还支持构建多平台镜像。要了解更多信息,请参阅多平台镜像

  1. 打开浏览器以使用 Docker 进行 Play with Docker

  2. 选择 Login,然后从下拉列表中选择 docker

  3. 使用您的 Docker Hub 帐户登录,然后选择 Start (开始)。

  4. 选择左侧栏上的 ADD NEW INSTANCE 选项。如果您没有看到它,请将浏览器调宽一点。几秒钟后,浏览器中将打开一个终端窗口。

    Play with Docker add new instance
  5. 在终端中,启动新推送的应用程序。

    $ docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started
    

    您应该会看到镜像被拉取并最终启动。

    提示

    您可能已经注意到,此命令将端口映射绑定到 不同的 IP 地址。先前的命令将端口发布到主机上。这一次,您使用的是 .docker run127.0.0.1:30000.0.0.0

    绑定到 仅向环回公开容器的端口 接口。但是,绑定到 会暴露容器的端口 在主机的所有接口上,使其对外可用。127.0.0.10.0.0.0

    有关端口映射工作原理的更多信息,请参阅联网

  6. 当 3000 徽章出现时,将其选中。

    如果未显示 3000 标记,您可以选择 Open Port 并指定 。3000

总结

在本节中,您学习了如何通过将镜像推送到 注册表。然后,您转到一个全新的实例,并能够运行全新的 推送的镜像。这在 CI 管道中很常见,管道将 创建镜像并将其推送到注册表,然后推送到生产环境 可以使用最新版本的镜像。

相关信息:

后续步骤

在下一节中,您将了解如何在容器化应用程序中持久保存数据。