现在您已经构建了一个映像,可以共享它。要共享Docker映像,您必须使用Docker注册表。默认注册表是Docker Hub,是您使用的所有图像的来源。
Docker ID(Docker标识)
Docker ID允许您访问Docker Hub,这是世界上最大的容器映像库和社区。如果没有Docker ID,请免费创建。
一、创建存储库
要推送映像,首先需要在Docker Hub上创建存储库。
- 注册或登录Docker Hub。
- 选择“Create Repository”按钮。
- 对于存储库名称,请使用入门。确保可见性为Public。
- 选择“Create”。
在下图中,您可以看到来自Docker Hub的Docker命令示例。该命令将推送到该存储库。
二、推送镜像
1、在命令行中,运行docker Hub上看到的docker push命令。请注意,您的命令将具有Docker ID,而不是“Docker”。
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,也不会看到。
要解决此问题,您需要标记您构建的现有图像,以为其提供另一个名称。
2、使用命令Docker login-u YOUR-USER-NAME登录到Docker Hub。
3、使用docker tag命令为入门图像指定一个新名称。将您的用户名称替换为Docker ID。
docker tag getting-started YOUR-USER-NAME/getting-started
4、现在再次运行docker push命令。如果要从Docker Hub复制值,可以删除标记名部分,因为您没有向图像名添加标记。如果不指定标记,Docker将使用名为latest的标记。
docker push YOUR-USER-NAME/getting-started
三、在新实例上运行镜像
现在,您的镜像已经构建并推送到注册表中,请尝试在从未见过此容器镜像的全新实例上运行您的应用程序。为此,您将使用Play with Docker。
注意
Play with Docker使用amd64平台。如果您将基于ARM的Mac与Apple Silicon一起使用,则需要重建映像以与Play with Docker兼容,并将新映像推送到存储库中。
要为amd64平台构建映像,请使用--platform标志。docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .
Docker buildx还支持构建多平台映像
- 打开浏览器以使用Docker。
- 选择Login,然后从下拉列表中选择docker。
- 使用Docker Hub帐户登录,然后选择开始。
- 选择左侧栏上的“添加新实例”选项。如果看不到,请将浏览器扩大一点。几秒钟后,浏览器中将打开一个终端窗口。
5、在终端中,启动新推送的应用。
$docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started
您应该看到图像被拉下并最终启动。
提示
您可能已经注意到,该命令将端口映射绑定到不同的IP地址。以前的docker在主机上运行命令以将端口发布到127.0.0.1:3000。这一次,您使用的是0.0.0.0。
绑定到127.0.0.1仅向环回接口公开容器的端口。然而,绑定到0.0.0.0会在主机的所有接口上公开容器的端口,使其可供外部使用。
有关端口映射工作方式的更多信息,请参阅网络。
6、当3000标识出现时,选择它。
如果未显示3000标识,则可以选择“打开端口”并指定3000。
四、总结
在本节中,您学习了如何通过将图像推送到 注册表。然后,您转到了一个全新的实例,并能够运行新的实例 推送图像。这在 CI 管道中很常见,其中管道将 创建映像并将其推送到注册表,然后推送到生产环境 可以使用最新版本的映像。