你应该在部署Web应用程序时重新创build容器吗?

我试图找出最佳做法是否会规定,当部署我的Web应用程序的新版本(nodejs运行在自己的容器中)时,我应该:

  • 做一个从容器内的git pull并更新“到位”; 要么
  • 用新的代码创build一个新的容器,并执行两个docker容器的热插拔

我可能会错过一些技术细节,因为我对容器的想法很陌生。

第二种方法是最佳实践:您将使用新代码制作第二个版本的图像,停止您的容器,并根据第二个版本运行第二个容器。

这个想法是,你可以很容易地回滚,因为你的图像的第一个版本可以用来运行最初在生产中的容器。

尝试修改正在运行的容器并不是一个好主意,因为一旦停止并删除它,再次运行它将从原始映像中以原始状态运行。 除非您将该容器提交到新映像,否则这些更改将会丢失。 即使你确实承诺了,你也不能轻易地重build那个图像。 (再加上你会提交所有的容器:它的新代码,而且在服务器执行过程中创build了一堆额外的文件:日志和其他文件:不是很干净)

一个容器应该从一个你可以从Dockerfile的规范中精确构build的图像运行。 它不应该在运行时被修改。

几个警告虽然:

  • 如果你的容器被其他容器使用了( --link ) ,你应该先停下来,停止你的容器并从新版本的图像中运行一个新容器,然后重新启动你的其他容器。
  • 不要忘记重新安装您使用的任何数据容器 ,以获得持久性数据。