如何链接多个docker swarm服务?

时间:2017-09-10 21:34:54

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

我是码头哲学的忠实粉丝(至少我认为我是)。即便如此,我似乎仍然相当新手,因为我似乎没有掌握使用docker的预期方式。

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

  1. 创建一个容器,其中包含应用程序所需的所有内容。
    • 例如,我想要像Drupal网站这样的东西。然后我会将nginx,php,mysql和代码放入容器中。我可以在群集模式下将其作为服务运行,并根据需要进行扩展。如果我需要另一个Drupal站点,我会运行第二个容器/服务,它包含nginx,php和mysql以及(稍微)不同的代码。我现在需要2个图像来运行容器或服务。
    • Pro's - 简单,我在一个容器中需要的一切
    • Con's - 无法在端口80上运行每个容器(因此需要反向代理或其他东西)。 (不确定,但我可以想象)服务器负载更高,因为有多个容器/服务运行nginx,php和mysql。
  2. 创建4个单独的容器。 1个nginx容器,1个php容器,1个mysql容器和1个代码/数据容器。
    • 例如,我想要相同的Drupal网站。我现在可以将它们作为单独的服务运行,并随着代码容器(Drupal站点或其他站点)的数量增加而在我的服务器上扩展它们。我只需要每个容器/服务1个图像,而不是每个站点单独的图像。
    • Pro - 每个服务的模块化,单一责任(1个用于数据库,1个用于网络服务器等),只能扩展需要扩展的区域(如果请求增加则扩展数据库,如果流量增加则扩展nginx等)。
    • Con's - 我不知道如何做这项工作:)。
  3. 我个人会选择根据第二个选项进行设置。有一个数据库容器/服务,nginx容器/服务等。这对我来说似乎更灵活,更有意义。

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

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

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

1 个答案:

答案 0 :(得分:1)

如何使用泊坞广告(上面的选项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。因此链接会自动发生,您无需担心。

我知道我是一个初学者,试图掌握这个概念,但设置一个简单的网络服务器和运行网站似乎是一项基本任务(至少,它是以传统方式为我)但我似乎无法随时随地在线查找答案。我觉得我想使用码头工具还是看起来不够好看,我完全不合格

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