我是使用docker的新手,到目前为止,我无法找到包含RVM
或rbenv
的许多ruby / rails图像。
我看到的最常见的事情是每个容器都有多个标记,每个标记的图像版本都安装了只有一个版本的Ruby。例如,见image。
使用其他版本的唯一方法是为您正在使用的图像使用另一个标记,因为您无法使用RVM或rbenv安装新版本。
这是故意的吗?
将版本管理器用于docker容器内的编程语言是不是一种坏习惯吗?
为什么?
答案 0 :(得分:2)
这在docker中被认为是一种不好的做法或反模式。 RVM正在尝试解决docker正在解决的类似问题,但采用了一种截然不同的方法。 RVM专为主机或VM而设计,所有工具都安装在一个位置。 Docker创建了一个隔离的环境,其中只包含运行单个应用程序所需的工具。
容器理想上是简约的,只包含应用程序所需的先决条件,使它们更具可移植性。 Docker还使用图层和联合文件系统来重用每个图像的公共基础图像,因此任何像Ruby版本X的版本的副本只会下载并写入磁盘一次(忽略对该图像的更新)。
答案 1 :(得分:1)
这取决于你将如何使用它。如果你需要在自定义docker镜像上安装任何版本的ruby,而不必担心下载tarball和应用补丁RVM可能是完美的。 RVM基本上是一个bash脚本,因此在docker容器中使用它与在docker容器中使用任何其他bash脚本一样糟糕。