同步Docker镜像

3

我有两台机器(不同的主机),都运行着Docker,并且我在这两台机器上使用相同的镜像。我该如何保持两个镜像的同步,例如,在其中一台主机上更改镜像后,希望在另一台主机上也反映出更改。我可以提交镜像并将其复制到另一台主机上。还有其他更有效的方法吗?


你是否正在使用任何镜像注册表?你想让这些镜像自动同步而不是复制或推送/拉取吗? - vivekyad4v
@vivekyad4v 我目前还没有使用注册表。如果使用了注册表,我就可以将其推送到注册表并从中拉取对吗?是的,我想要实现自动同步。 - vignesh1905
2个回答

4
我可以想到一些方法:

1. 使用Docker registry

工作流程如下:

  • 主机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


请记住,容器被认为是短暂的。这意味着在另一个主机中更新一个镜像将需要:

  1. 停止和删除任何旧容器(使用过时的镜像运行)
  2. 运行一个新的(使用更新的镜像)

我引用自:Dockerfile最佳实践

一般指南和建议

容器应该是短暂的

由您的Dockerfile定义的镜像生成的容器应尽可能短暂。通过“短暂”,我们的意思是可以停止和销毁它,并使用绝对最少的设置和配置构建并放置一个新的容器。


0

您可以执行 docker push 命令将镜像上传至 docker registry,并使用 docker pull 命令从其他主机获取最新的镜像。

如需更多信息,请查看 this


我猜他想要图像自动同步而不是复制或推送/拉取,就像@vignesh所说 - “我可以提交图像并将其复制到另一个主机”。可能他没有使用任何注册表,否则“push”和“pull”是正确的方法。 - vivekyad4v
我认为他使用“保存”和“加载”的方式,而不是通过注册表,因为他根本没有提到“注册表”。 - SuicideSheep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接