我可以使用docker来隔离我的开发环境吗?

好吧,这让我疯狂。 我已经读了很多关于Docker的东西,但仍然无法理解 – 是我的docker工人。

我在工作中使用Mac OS X,并且使用Ubuntu来开发虚拟机。 我为每个项目使用stream浪汉,因为我想拥有与生产服务器上相同的操作系统和库。 我讨厌像rbenv和nvm这样的工具,因为它们的使用增加了terminal的启动时间。 如果两者都激活,我需要等待2..4秒,以便新的terminal标签准备就绪。 我打字速度很快,这延迟了我的生产力。

我可以用stream浪汉,但使用virtualbox,每个虚拟机需要〜800 MB的RAM …太多了。

所以问题是:我可以像stream浪汉一样使用docker吗? 说我有两个项目,我需要使用Ruby 2.0的项目A和Ruby 2.3的项目B,是否有可能/正确与docker使用自己的版本的Ruby创build两个容器? 我不希望这些版本的Ruby与系统Ruby相交。

在vagrant中,我只用Ruby 2.0创build了两个虚拟机,第二个用Ruby 2.3创build。 如果我不需要他们中的任何一个,我会销毁虚拟机,并且我的系统将保持清除,而客户机上没有安装软件。

编辑:我知道我不能用OS X本地使用Docker。让我们假设一些Linux Ubuntu / Debian / Arch /等。 我准备转移到Linux,如果我知道Linux + Docker会给我我想要的。

您可以在Mac OS X中使用Dockertesting版(适用于Mac OS X),但仍使用虚拟机,但比Virtualbox更轻。 此外,它支持与OS X的更好的集成。到目前为止,它是有点bug。

要回答你的问题,是的,你可以创build你的环境,你需要在Docker容器中运行,而不影响其他容器或系统。 请记住,一个容器通常在其中运行一个进程,所以不要指望像在一个无用的盒子中运行多个服务。 它不是一个完整的操作系统,它只是一个运行在不同内核命名空间中的可执行程序。 如果你想运行多个进程,有一些解决方法,但是“正确”的方法是使用docker-compose之类的东西来连接多个容器。

是的,你可以绝对创build两个独立的Docker容器,每个运行不同版本的Ruby,不会影响你的主机已经安装的东西。

当你创build一个Dockerfile的时候,你可以指定一个扩展的基础镜像。 例如:

FROM ruby:2.3-onbuild 

Ruby官方Docker Images只能回到2.1,但不要让它阻止你。 看看2.3 Dockerfile ,重新编写你自己的,但安装旧版本的Ruby,就完成了。 创build任何types的定制Docker镜像真的很简单。

资料来源:

Ruby官方Docker图像