了解Docker最佳实践并运行Web服务器

时间:2016-10-11 13:56:33

标签: docker

我在一个容器中运行一个简单的PHP7.0,Redis和NGINX服务器。

这意味着我将php7.0-fpm ngxinx redis作为服务运行。

但在我正在阅读的最佳实践中:

# Run only one process per container
In almost all cases, you should only run a single process in a single container.
Decoupling applications into multiple containers makes it much easier to scale horizontally and reuse containers.
If that service depends on another service, make use of container linking.

这是否意味着最好使用PHP7.0和应用程序运行一个容器,使用nginx运行另一个容器,使用redis运行另一个容器?<​​/ p>

1 个答案:

答案 0 :(得分:3)

@nwinkler在评论中是对的,推荐是好的。将应用程序分离到多个容器中的几个优点是:

  1. 构建时间
  2. 确实,如果没有发生任何变化,docker会进行哈希检查,并且不会构建图像的图层,但这仅限于图层结构(如果图层X更改了将构建X以上的所有图层)。这意味着当你的图像开始变大时,它会开始变得痛苦。

    1. 容器已隔离
    2. 当您附加到ngxinx时,您非常确定您所做的任何更改都不会导致php容器发生变化,这始终是一种很好的做法。

      1. 可扩展性
      2. 你还需要十个Redis,好的,让我们再运行十个Redis容器。

        一般情况下,我会为任何场景寻找基础图像的dockerfile,在你的情况下,我会为你的所有三个容器(phpredis&amp; {{1} })share(第三方库,工具等)。然后三个dockerfiles用于构建每个图像。然后是nxginxbash脚本,用于在容器内运行图像。