【问题标题】:How to link multiple docker swarm services?如何链接多个 docker swarm 服务?
【发布时间】:2017-09-10 21:34:54
【问题描述】:

我是 docker 哲学的忠实粉丝(或者至少我认为我是)。即便如此,从某种意义上说我仍然是新手,我似乎没有掌握使用 docker 的预期方式。

在我目前看到的情况下,使用 docker 有两种方式。

  1. 创建一个容器,其中包含应用程序所需的一切。
    • 例如,我想要一个 Drupal 站点之类的东西。然后我会将 nginx、php、mysql 和代码放入一个容器中。我可以在 swarm 模式下将其作为服务运行并根据需要对其进行扩展。如果我需要另一个 Drupal 站点,我会运行第二个容器/服务,其中包含 nginx、php 和 mysql 以及(稍微)不同的代码。我现在需要 2 个图像来运行容器或服务。
    • 专业人士 - 简单,我需要的一切都在一个容器中
    • Con's - 无法在端口 80 上运行每个容器(因此需要反向代理或其他东西)。 (不确定,但我可以想象)服务器负载较高,因为有多个容器/服务运行 nginx、php 和 mysql。
  2. 创建 4 个单独的容器。 1 个 nginx 容器、1 个 php 容器、1 个 mysql 容器和 1 个代码/数据容器。
    • 例如,我想要同一个 Drupal 站点。我现在可以将它们全部作为单独的服务运行,并随着代码容器(Drupal 站点或其他站点)数量的增加在我的服务器上扩展它们。我只需要每个容器/服务 1 个图像,而不是每个站点一个单独的图像。
    • 专业版 - 模块化,每个服务的单一职责(1 个用于数据库,1 个用于 Web 服务器等),易于仅扩展需要扩展的区域(如果请求增加则扩展数据库,如果流量增加则扩展 nginx 等)。
    • 骗局 - 我不知道如何做到这一点 :)。

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

但是,我正在努力解决如何使这项工作。如何让 nginx 服务查看 php 服务并将 nginx 配置指向数据服务中的代码文件夹等。我已经阅读了一些关于覆盖网络的内容,但这并不清楚 nginx 将如何查找 php在单独的容器/服务中。

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

  1. 如何使用 docker(上面的选项 1 或 2 或完全不同)?
  2. 如何将服务链接在一起(让 nginx 在不同的服务中查找 php)?
  3. (半) 我知道我是一个试图掌握这个概念的初学者,但是设置一个简单的网络服务器和运行网站似乎是一项基本任务(至少,它以传统方式对我来说)但我似乎做不到随时随地在线查找我的答案。我是否完全不符合我想使用 docker 的方式,还是我看起来不够好?

【问题讨论】:

    标签: docker docker-swarm docker-container docker-swarm-mode


    【解决方案1】:

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

    由你决定,我更喜欢使用选项 #2,但我有时也会混合使用选项 #1 和选项 #2。所以这一切都取决于用例以及哪些选项看起来更适合用例。在我们的一个客户中,需要将 SSH 和 Nginx、PHP 都放在同一个容器中。所以我们混合了#1 和#2。 mysql、redis在自己的容器上,app在一个容器上

    如何将服务链接在一起(让 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。所以链接会自动发生,您不必担心。

    我知道我是一个试图掌握这个概念的初学者,但设置一个简单的网络服务器和运行网站似乎是一项基本任务(至少,它以传统方式对我来说)但我似乎做不到随时随地在线查找我的答案。我是否完全不符合我认为我想使用 docker 的方式,或者我看起来不够好

    有很多好的资源以文章的形式提供,你只需要看看

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多