在Docker容器中使用像RVM这样的版本管理器是不好的做法吗?

时间:2017-01-29 08:04:09

标签: ruby-on-rails ruby docker rvm dockerfile

我是使用docker的新手,到目前为止,我无法找到包含RVMrbenv的许多ruby / rails图像。

我看到的最常见的事情是每个容器都有多个标记,每个标记的图像版本都安装了只有一个版本的Ruby。例如,见image

使用其他版本的唯一方法是为您正在使用的图像使用另一个标记,因为您无法使用RVM或rbenv安装新版本。

这是故意的吗?

将版本管理器用于docker容器内的编程语言是不是一种坏习惯吗?

为什么?

2 个答案:

答案 0 :(得分:2)

这在docker中被认为是一种不好的做法或反模式。 RVM正在尝试解决docker正在解决的类似问题,但采用了一种截然不同的方法。 RVM专为主机或VM而设计,所有工具都安装在一个位置。 Docker创建了一个隔离的环境,其中只包含运行单个应用程序所需的工具。

容器理想上是简约的,只包含应用程序所需的先决条件,使它们更具可移植性。 Docker还使用图层和联合文件系统来重用每个图像的公共基础图像,因此任何像Ruby版本X的版本的副本只会下载并写入磁盘一次(忽略对该图像的更新)。

答案 1 :(得分:1)

这取决于你将如何使用它。如果你需要在自定义docker镜像上安装任何版本的ruby,而不必担心下载tarball和应用补丁RVM可能是完美的。 RVM基本上是一个bash脚本,因此在docker容器中使用它与在docker容器中使用任何其他bash脚本一样糟糕。