Docker:开发环境

时间:2016-01-07 17:22:53

标签: docker

我使用几种不同的语言/技术进行编码。实际上,老实说,我只是搞乱,玩golang,node.js,ruby on rails等。

但是现在我想跳上Docker的潮流,但是我不确定它会带来什么好处以及我是否应该努力。

将Docker用于开发环境的最佳做法是什么?我是否为每种语言或技术设置了一个单独的容器?或者容器是否过度杀伤我应该只设置一个VM(Windows主机上的Linux VM)进行所有开发?

你们如何使用Docker进行开发工作?

3 个答案:

答案 0 :(得分:1)

您不应该将Docker用于您的开发环境,如果您想完全分离,请使用类似VirtualBox的常规虚拟机。 Docker更适合在某处提供完成的代码,例如到临时环境。 原因是Docker容器不适合持久化状态,除非你搞乱共享卷。

答案 1 :(得分:1)

你应该继续这样做,这是最好的方法,即使你在容器之间共享卷,并且如果你在工作站中拥有必要的硬件能力并且不需要分发,则避免设置不同的VM你的环境在不同的工作站上。

在我现在的公司,我是负责建立所有开发环境的人。我们有一些单片应用程序,但我们正在迅速将多个功能分离为单独的微服务。

我们如何开始管理,每个微服务代码存储库都包含所有内容,即docker-compose文件,带有自动化,测试等的makefile。

开发人员只需在Mac OS X上安装docker-toolbox,克隆存储库并输入make即可。这将启动docker与容器和所有必要的零碎(DB,缓存,队列)之间的所有链接组成。

直接链接到Makefile:https://github.com/marclop/prometheus-demo/blob/master/Makefile

此外,如果你想避免设置所有容器,那里有一些替代品,例如Phusion的一个:https://github.com/phusion/baseimage-docker

我希望这能回答你的问题。

答案 2 :(得分:0)

这个问题的答案本质上是主观的,与你喜欢的发展方式有关。它还将与您希望如何在测试场景中部署这些内容相关联。

Jonas是正确的,Docker的主要目的是为暂存/生产环境提供完成的代码但是我已经将它用于开发,实际上根据您的情况可能更好。

要发白 - 假设您拥有单个虚拟服务器,并且希望最大限度地减少用于环境的空间量。 Docker的全部目的是存储Linux内核(和基础软件)的单个副本,并在每个docker实例中重用它们。您还可以通过在Linux上运行Docker容器来最小化用于运行基本Linux“件”的RAM和CPU使用率。

使用Docker的最有说服力的理由(在您的情况下)可能是为了更容易找到您想要的基本设置。有很多预先制作的docker容器可用于构建测试/开发环境,并在完成不同的机器之后部署代码,使用Docker比VMWare或Virtual Box更容易(是的,你可以创建一个OVF)这会有用,但Docker更容易恕我直言。

我在玩这个时亲自使用了Project Photon,这提供了一种在VMWare环境中设置基本Docker设置的简单方法。

https://blogs.vmware.com/cloudnative/introducing-photon/

我最后一次使用Docker是为了在我的一个类中进行分配,我不得不在本地实例上使用MongoDB。设置MongoDB对于Windows或Linux中的任何一个(或两个)都是微不足道的,但我觉得有机会学习Docker太过分了。最后,我现在对Docker感觉更舒服:)

有些方法可以备份容器,这可以(正如Jonas指出的那样)变得混乱,但它不属于合理技术人员的范围。

无论你走哪条路都好运!同样,任何一种方式显然都会起作用 - 我认为这两种方法都没有任何内在错误。