共享应用程序
现在您已经构建了镜像,可以共享它。要共享 Docker 镜像,您必须使用 Docker 注册表。默认注册表是 Docker Hub,您使用的所有镜像都来自该注册表。
Docker ID
Docker ID 允许您访问 Docker Hub,这是世界上最大的容器镜像库和社区。如果您没有 Docker ID,请免费创建一个 Docker ID。
创建仓库
要推送镜像,您首先需要在 Docker Hub 上创建一个存储库。
注册或登录到 Docker Hub。
选择 Create Repository (创建存储库) 按钮。
对于存储库名称,请使用 。确保 Visibility (可见性) 为 Public (公共)。
getting-started
选择 创建。
在下图中,您可以看到来自 Docker Hub 的示例 Docker 命令。此命令将推送到此存储库。
推送镜像
在命令行中,运行您在 Docker 上看到的命令 枢纽。请注意,您的命令将具有您的 Docker ID,而不是“docker”。例如。
docker push
docker 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-started
docker image ls
要解决此问题,您需要标记您构建的现有镜像,以便为其指定其他名称。
使用命令登录到 Docker Hub。
docker login -u YOUR-USER-NAME
使用命令为镜像指定新名称。替换为您的 Docker ID。
docker tag
getting-started
YOUR-USER-NAME
$ docker tag getting-started YOUR-USER-NAME/getting-started
现在再次运行该命令。如果要从 Docker Hub 中,您可以删除该部分,因为您没有向 Image name (镜像名称)。如果您未指定标签,Docker 将使用名为 .
docker push
tagname
latest
$ 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 还支持构建多平台镜像。要了解更多信息,请参阅多平台镜像。
打开浏览器以使用 Docker 进行 Play with Docker。
选择 Login,然后从下拉列表中选择 docker。
使用您的 Docker Hub 帐户登录,然后选择 Start (开始)。
选择左侧栏上的 ADD NEW INSTANCE 选项。如果您没有看到它,请将浏览器调宽一点。几秒钟后,浏览器中将打开一个终端窗口。
在终端中,启动新推送的应用程序。
$ docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started
您应该会看到镜像被拉取并最终启动。
提示
您可能已经注意到,此命令将端口映射绑定到 不同的 IP 地址。先前的命令将端口发布到主机上。这一次,您使用的是 .
docker run
127.0.0.1:3000
0.0.0.0
绑定到 仅向环回公开容器的端口 接口。但是,绑定到 会暴露容器的端口 在主机的所有接口上,使其对外可用。
127.0.0.1
0.0.0.0
有关端口映射工作原理的更多信息,请参阅联网。
当 3000 徽章出现时,将其选中。
如果未显示 3000 标记,您可以选择 Open Port 并指定 。
3000
总结
在本节中,您学习了如何通过将镜像推送到 注册表。然后,您转到一个全新的实例,并能够运行全新的 推送的镜像。这在 CI 管道中很常见,管道将 创建镜像并将其推送到注册表,然后推送到生产环境 可以使用最新版本的镜像。
相关信息:
后续步骤
在下一节中,您将了解如何在容器化应用程序中持久保存数据。