【问题标题】:Syncing docker images同步泊坞窗图像
【发布时间】:2018-01-19 09:27:35
【问题描述】:

我有 2 台机器(单独的主机)运行 docker,我在两台机器上使用相同的映像。如何使两个图像保持同步。例如。假设我对其中一个主机中的图像进行了更改,并希望这些更改也反映在另一台主机中。我可以提交图像并将图像复制到其他主机。还有其他有效的方法吗?

【问题讨论】:

  • 您是否使用任何镜像注册表?您是否希望图像自动同步而无需复制或推/拉?
  • @vivekyad4v 目前没有使用注册表。如果使用注册表,我可以推送到注册表并从中提取对吗?是的,我想要自动同步。

标签: docker


【解决方案1】:

我能想到的一些方法:

1。使用 Docker 注册表

这里的工作流程是:

  • 主机A:docker commit,docker push
  • 主机 B:docker pull

2。通过将图像保存到.tar 文件

这里的工作流程是:

  • 主机A:docker save
  • 主机B:docker load

3。使用Dockerfile 并再次构建图像​​

这里的工作流程是:

  • 提供Dockerfile 以及所需的代码/文件
  • 每次您的代码发生更改并且您想要发布时,请使用 docker build 创建新图像。
  • 从您要更新的主机上,您必须获取更新后的源代码(可能使用 Git 等版本控制软件),然后docker build 图像

4。 CI/CD 管道

您可以在此处观看视频:docker.com/use-cases/cicd


请记住,containers 被视为短暂。这意味着在另一个主机中更新 image 将需要:

  1. 到stop 和remove 任何旧容器(使用过时的镜像运行)
  2. 到run 一个新的(带有更新的图像)

我引用自:Best practices for writing Dockerfiles

一般准则和建议

容器应该是短暂的

您的 Dockerfile 定义的映像生成的容器应尽可能短暂。 “短暂的”是指可以停止和销毁它,并以最少的设置和配置构建和安装一个新的。。

【讨论】:

    【解决方案2】:

    您可以执行docker push 将您的图像上传到docker registry 并执行docker pull 从另一个主机获取最新图像。

    更多信息请关注this

    【讨论】:

    • 我猜他希望图像自动同步,而不需要复制或推/拉,正如@vignesh 所说——“我可以提交图像并将图像复制到另一个主机”。可能他没有使用任何注册表,否则push 和pull 是要走的路。
    • 我认为他使用 save 和 load 的方式无需通过注册表,因为他根本没有提到 registry
    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2019-09-12
    相关资源
    最近更新 更多