如何在dev和生产环境中使用docker?

时间:2014-10-12 02:11:56

标签: docker

我们目前正在将厨师用于生产和开发环境。我喜欢docker的概念,它为不同的服务角色启动隔离的容器。我认为在构建开发环境时它会很有用。我有点不清楚如何在生产环境中使用它(或者我应该在生产环境中使用它?)。

在生产环境中,每个服务都已在其专用服务器实例上运行。我认为在容器内运行它们而不是直接在主机操作系统上运行效率很低。

另一方面,如果我们只在开发环境中使用docker,我们最终会编写2份系统配置,一份在docker中,一份在chef中,这也不是理想的。

任何建议或建议都将不胜感激。

2 个答案:

答案 0 :(得分:6)

  

在生产环境中,每个服务都已在其专用服务器实例上运行。我认为在容器内运行它们效率低,而不是直接在主机操作系统上运行。

docker在生产中的优势在于易于部署。为了保持最佳性能,请在每台生产计算机上安装docker,并让每个docker主机只运行一个容器。这样,您的应用就可以像以前一样访问相同数量的系统资源。

为了减少docker可能产生的开销,有一些技巧:

快速网络

默认情况下,docker会为您的容器创建一个新的网络堆栈,但如果在运行新容器时使用--net=host选项,则容器将使用docker主机网络堆栈。这将使您的容器在网络性能方面没有任何开销。

另请注意,使用--net=host时,您不需要使用-p泊坞窗运行选项发布端口,也不需要公开它们。可以在docker host ip上访问容器进程中的任何侦听端口。

快速文件系统

与非分层文件系统相比,docker容器文件系统是Union file system,速度很慢。要保持良好的磁盘性能,请确保容器中运行的进程在docker data volume上执行密集的读/写操作。数据卷不是容器分层文件系统的一部分,具有docker主机文件系统的性能。

答案 1 :(得分:1)

Docker实际上非常高效 - 开销并不大,因为它不像虚拟化层,它只是一个拥有自己的命名空间和FS的容器。将相同的设置部署到生产中有几个优点:

  1. 你只需要测试一次" - 在本地运行的生产中运行完全相同的事情,并且配置问题的可能性很小。
  2. 您可以为所有实例使用完全相同的云图像,这是您的基本Linux和Docker - 其他所有内容都由Docker处理,因此需要对Chef / Puppet进行90%的处理。
  3. 使用docker可以更容易地跟踪配置更改,因为基本上不涉及脚本,因此对其他配置管理工具的需求也会减少。
  4. 如果您想利用多个CPU,您可以在生产主机上运行同一图像的多个容器,并且您不必担心这些过程如何很好地协同工作,因为每个容器都有自己的容器FS等。