Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在不使用docker swarm的情况下设置docker覆盖网络吗?_Docker_Docker Compose_Docker Swarm - Fatal编程技术网

我可以在不使用docker swarm的情况下设置docker覆盖网络吗?

我可以在不使用docker swarm的情况下设置docker覆盖网络吗?,docker,docker-compose,docker-swarm,Docker,Docker Compose,Docker Swarm,我有两套服务(容器组)在两台不同的机器上运行。这两组服务都是使用docker compose文件声明的。目前,在每个docker compose文件中,我都包含一个桥接网络。这两组服务通过明确提及每台机器的IP地址来相互通信 如果我让这两个docker服务集通过覆盖网络相互通信,而不是像现在这样通过硬编码IP地址让每个服务集相互通信,这会减少网络延迟吗?换言之,这两个服务之间的通信性能是否会提高 如果上一个问题的答案是肯定的,那么我可以在这两台机器之间定义一个覆盖网络而不使用docker sw

我有两套服务(容器组)在两台不同的机器上运行。这两组服务都是使用docker compose文件声明的。目前,在每个docker compose文件中,我都包含一个桥接网络。这两组服务通过明确提及每台机器的IP地址来相互通信

  • 如果我让这两个docker服务集通过覆盖网络相互通信,而不是像现在这样通过硬编码IP地址让每个服务集相互通信,这会减少网络延迟吗?换言之,这两个服务之间的通信性能是否会提高

  • 如果上一个问题的答案是肯定的,那么我可以在这两台机器之间定义一个覆盖网络而不使用docker swarm吗?另外,我可以在docker compose文件中声明此docker swarm网络吗

  • 如果您有.yaml配置文件或命令行代码片段,可以满足我的要求,我们将不胜感激

    覆盖网络会减少延迟吗

    很可能不会,它为需要在连接的每一侧处理的IP数据包添加了额外的封装层。通常,人们使用覆盖网络来简化集群间通信并降低服务发现的复杂性(应用程序可以通过服务名称进行通信,而无需在另一个节点上查找外部IP/端口)

    覆盖需要群集模式吗

    不,但这使它变得更容易,我不会回到运行外部键/值数据库(如Concur)并将docker与之集成的旧方法。您也不能将配置覆盖网络数据库的旧方法与swarm模式混合使用,因此如果您决定将来使用swarm,您需要禁用旧的k/v数据库配置并重新创建覆盖网络

    Swarm模式非常容易启用:

    docker swarm init
    
    然后按照说明使用所需的标志(如网络接口)重新运行init命令,或者将其他节点加入集群

    重要的是,您的容器本身不需要由swarm模式管理,您可以将其保留为仅管理覆盖网络的k/v数据库。创建网络时,请确保将其设置为可附加,以允许swarm模式以外的容器使用它:

    docker network create -d overlay --attachable overlay-net-name
    
    您还可以在compose文件中定义该名称,只需确保指定网络名称,并且通常是稍后启动的服务的外部名称