如何链接多个docker群服务?

我是docker理念的狂热粉丝(或者至less我认为我是)。 即使如此,我仍然是新手,因为我似乎没有把握使用docker的预期方式。

正如我目前看到的,有两种使用docker的方法。

  1. 创build一个包含应用程序所需的一切的容器。
    • 例如,我想要一个Drupal站点。 然后我把nginx,php,mysql和代码放到一个容器中。 我可以在群集模式下运行这个服务,并根据需要进行扩展。 如果我需要另一个Drupal站点,我将运行第二个包含nginx,php和mysql以及(稍微)不同的代码的容器/服务。 我现在需要2个图像来运行一个容器或服务。
    • Pro的 – 容易,我需要在一个容器中的一切
    • Con的 – 无法在端口80上运行每个容器(所以需要一个反向代理或什么的)。 (不知道在但我能想象)服务器负载更高,因为有多个容器/服务运行nginx,PHP和MySQL。
  2. 创build4个独立的容器。 1个nginx容器,1个php容器,1个mysql容器和1个代码/数据容器。
    • 例如,我想要相同的Drupal站点。 我现在可以将它们全部作为单独的服务来运行,并随着代码容器(Drupal站点或其他站点)数量的增加而扩展到我的服务器。 我只需要每个容器/服务1个图像,而不是每个站点的单独图像。
    • Pro的 – 模块化的,每个服务的单一责任(1个数据库,1个Web服务器等),只能轻松扩展需要扩展的区域(如果请求增加则扩展数据库,如果stream量增加则增加nginx等)。
    • Con的 – 我不知道如何使这个工作:)。

就我个人而言,我会select根据第二个选项进行设置。 有一个数据库容器/服务,nginx容器/服务等。这似乎对我来说更灵活,更有意义。

我正在努力如何使这项工作。 我将如何使nginx服务看看php服务,并指向nginxconfiguration到数据服务等代码文件夹中我已经读了一些关于覆盖networking的东西,但是这并没有让我清楚如何nginx会寻找PHP在一个单独的容器/服务。

因此,我有2个(半)的问题:

  1. 如何使用docker工具(上面的选项1或2或完全不同)?
  2. 如何将服务连接在一起(让nginx在不同的服务中寻找php)?
  3. (一半)我知道我是一个初学者,想要把握这个概念,但是build立一个简单的networking服务器和运行网站似乎是一个基本的任务(至less,这对我来说是传统的方式),但我似乎无法find我的答案随时随地在线 我完全不以我想用docker工具的方式,或者我没有find足够好的?

如何使用docker工具(上面的选项1或2或完全不同)?

为了你,我更喜欢使用选项#2,但我有时也使用了选项#1和选项#2的组合。 所以这一切都取决于用例,哪些选项看起来更好的用例。 在我们的客户之一,需要SSH和Nginx,PHP都在同一个容器。 所以我们混合#1和#2。 Mysql,Redis在自己的容器和应用程序在一个容器上

如何将服务连接在一起(让nginx在不同的服务中寻找php)?

使用docker-compose来定义你的服务和docker stack来部署它们。 您不必担心服务的名称

 version: '3' services: web: image: nginx db: image: mysql environment: - "MYSQL_ROOT_PASSWORD=root" 

现在部署使用

 docker stack deploy --compose-file docker-compose.yml myapp 

在你的nginx容器中,你可以通过使用它的服务名db来访问mysql。 所以链接自动发生,你不用担心。

我知道我是一个试图掌握这个概念的初学者,但是build立一个简单的networking服务器和运行网站似乎是一个基本的任务(至less,这对于我来说是传统的方式),但我似乎无法在任何地方find我的答案。 我完全不以我想用docker工具的方式,或者我没有find足够好的

文章的forms有很多很好的资源,你只需要看