Docker:开发环境

我正在编写几种不同的语言/技术。 其实说实话,我只是乱搞,玩golang,node.js,在轨道上的ruby等。

但是现在我也想跳上Docker的潮stream,但是我不知道会有什么好处,如果我付出努力的话。

在开发环境中使用Docker的最佳实践是什么? 我是否为每种语言或技术设置了一个独立的容器? 还是容器过度杀毒,我应该在哪里开发一个虚拟机(Windows主机上的Linux虚拟机)?

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

即使您在容器之间共享容量,也应该尽可能地继续这样做,这样做也是最好的方法,并且避免在工作站中拥有必要的硬件function并且不需要分配环境的情况下设置不同的虚拟机不同的工作站。

在我现在的公司里,我是负责build立所有开发环境的人。 我们有几个单一的应用程序,但我们很快将多个function解耦成单独的微服务。

我们如何开始pipe理,就是每个微服务代码库都有自包含的东西,即docker-compose文件,还有一个用于自动化,testing等的makefile。

开发人员只需在他们的Mac OS X上安装docker-toolbox,克隆repo并inputmake 。 这将启动docker组件与容器和所有必要的零件(DB,caching,队列)之间的所有链接。

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

另外,如果你想避免设置所有的容器,那么有一些select,例如Phusion的: https : //github.com/phusion/baseimage-docker 。

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

你不应该在你的开发环境中使用Docker,如果你想完全分离的话,可以使用像VirtualBox这样的常规虚拟机。 Docker更适合在某个地方提供完成的代码,例如分发环境。 原因在于Docker容器对于持久化状态并不理想,除非您混淆了共享卷。

对此的回答本质上是主观的,并且与你喜欢怎样开发有关。 它也将被绑定到你想要在testing场景中进行部署的方式。

Jonas是正确的,Docker的主要目的是提供完成的代码到一个分段/生产环境但是我已经使用它来进行开发,事实上根据你的情况可能会更好。

要使用虚拟服务器 – 可以说有一台虚拟服务器,并且希望最小化您在环境中使用的空间量。 Docker的全部目的是存储一个Linux内核(和基本软件)的副本,并在每个docker实例中重新使用它们。 您还可以通过在Linux之上运行Docker容器,最大限度地减less用于运行基本Linux“碎片”的内存和CPU使用率。

可能最有说服力的理由(在你的情况下)使用Docker将使寻找你想要的基础设置更容易。 有很多预制的Docker容器可以用来构build你的testing/开发环境,并且在完成不同的机器后部署你的代码,使用Docker比VMWare或者VirtualBox更容易(是的,你可以创build一个OVF这将工作,但docker是恕我直言,更容易)。

当我正在玩这个游戏的时候,我个人使用了Project Photon,这提供了一个在VMWare环境中设置基本Docker设置的非常简单的方法。

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

我最后一次使用Docker是在我的一个类中的一个任务,我不得不在本地实例中使用MongoDB。 设置MongoDB在Windows或者Linux(或者两者)上都是微不足道的,但是我觉得学习Docker的机会太多了。 最后,我现在感觉Docker更舒适了:)

有些方法可以对容器进行备份,可以像乔纳斯指出的那样容易混淆,但它不在合理的技术人员的范围之内。

祝你好运,你走吧! 再一次,无论哪种方式显然都会起作用 – 而且我也没有发现任何一种方法都有内在的错误。