Docker - 将新内容传递给生产

Docker - passing new content to production

我是 Docker 的新手,并且仍在寻找一种安全的方法来更新生产代码而不丢失任何有价值的数据。

到目前为止,我们更新生产机器的方式是这样的:

我已经阅读了无数关于备份的指南,但仍然不明白如果你丢失了一些东西,如果你不备份而出现问题,这是什么意思。所以我有一些问题:

  1. 当你docker stack rm 容器时,你删除它?如果是,我这样做会失去一些东西吗(例如体积)?
  2. 我应该备份容器及其卷(我仍然不明白该怎么做),还是只备份图像?或者在 docker 构建我的新代码并且我安全时创建一个新标签?

谢谢

当您 docker rm 一个容器时,您删除了容器文件系统,但不会影响可能附加到该容器的任何卷。如果您 docker run 一个装载相同卷的新容器,它将看到它们的内容。

您永远不会备份整个容器。您确实需要备份卷的内容。

一个好的做法是将您的应用程序设计为根本不在本地文件中存储任何内容:将所有内容绝对存储在数据库或其他“远程”存储中。实际存储不必在 Docker 中。然后,您可以像备份任何其他数据库一样备份数据库,并根据需要自由删除和创建任意数量的容器副本(可能通过调整 Swarm 或 Kubernetes 中的副本计数)。