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

相关推荐
engchina7 小时前
WSL Ubuntu で Kubernetes v1.34.2 + Docker 環境を構築する
ubuntu·docker·kubernetes
JH30737 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_8 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble9 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟9 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖9 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_124987075310 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_10 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.10 小时前
Day06——权限认证-项目集成
java
瑶山11 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard