Docker—共享应用程序

现在您已经构建了一个映像,可以共享它。要共享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还支持构建多平台映像

  1. 打开浏览器以使用Docker。
  2. 选择Login,然后从下拉列表中选择docker。
  3. 使用Docker Hub帐户登录,然后选择开始。
  4. 选择左侧栏上的"添加新实例"选项。如果看不到,请将浏览器扩大一点。几秒钟后,浏览器中将打开一个终端窗口。

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 管道中很常见,其中管道将 创建映像并将其推送到注册表,然后推送到生产环境 可以使用最新版本的映像。

相关推荐
cynicme3 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
青云交4 小时前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu4 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
Lei活在当下4 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
不穿格子的程序员5 小时前
从零开始刷算法-栈-括号匹配
java·开发语言·
lkbhua莱克瓦245 小时前
Java练习-正则表达式 1
java·笔记·正则表达式·github
yue0085 小时前
C#类继承
java·开发语言·c#
凯芸呢6 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
竹竹零6 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
钱多多_qdd6 小时前
基础篇:IoC(三):Bean实例化策略InstantiationStrategy
java·spring