从Docker-run更改为Docker-compose;关于集装箱间网络通信的不可预测的行为

时间:2017-11-03 09:13:50

标签: java docker network-programming docker-compose docker-machine

经过两天试图自己弄清楚,我决定向公众提出我的问题。

我们使用Docker来设置我们的测试环境。我们正在测试Java-Client-Server-Application。在过去,该应用程序只是在“单站点”配置(1个服务器和x客户端)中运行。现在我们将应用程序升级到“多站点” - 配置(x服务器和y客户端)。

出于这个原因,我们从Docker-run更改为Docker-compose,以轻松构建“复杂”网络。

使用Docker-run我们没有遇到任何问题。

使用Docker-compose,我们可以像我们希望的那样建立一个网络(例如4个服务器,每个服务器有2个客户端)。我们还可以通过SSH和VNC访问每个容器,我们可以在自己的网络中的每个容器之间ping。

问题: 我们的Java客户端无法连接到那些服务器。即使他们在同一个网络中。

现在真是令人沮丧的部分:
也许5个中的1个客户端能够连接到他的服务器。直到现在我称之为一个完全随机的行为。它并不总是第五个容器工作或相同的网络配置。此外,1-Server-1-Client-Network始终不起作用。最后一次可能是在第5次尝试之后。

首先我认为我也必须公开RMI-Ports,但这不起作用。后来我打开所有端口,只是为了确定,但这也没有用。关于Docker-Docs,它也没有必要这样做。此外,它也无法解释它有时会起作用的行为。我的问题还在于我没有设置原始的Docker-Run-Configuration,也许我错过了一些重要的部分。

也许有人可以指出我正确的方向。

此致 启

Example Picture for a Multi-Site-Configuration

自动创建的yaml-File的代码:

version: '2.1'
services: 
    foo_server_1: 
        image: foo_server:latest
        mem_limit: 1g
        memswap_limit: 2g
        container_name: foo_server_1
        ports: 
            - "22"
            - "4567"
        networks: 
            - foo_server_network
            - client_net_1
    foo_client_1_1: 
        image: foo_client:latest
        mem_limit: 1g
        memswap_limit: 2g
        links: 
            - foo_server_1:server
        container_name: foo_client_1_1
        ports: 
            - "22"
            - "5900"
            - "4567"
        networks: 
            - client_net_1
    foo_client_1_2: 
        image: foo_client:latest
        mem_limit: 1g
        memswap_limit: 2g
        links: 
            - foo_server_1:server
        container_name: foo_client_1_2
        ports: 
            - "22"
            - "5900"
            - "4567"
        networks: 
            - client_net_1
    foo_server_2: 
        image: foo_server:latest
        mem_limit: 1g
        memswap_limit: 2g
        container_name: foo_server_2
        ports: 
            - "22"
            - "4567"
        networks: 
            - foo_server_network
            - client_net_2
    foo_client_2_1: 
        image: foo_client:latest
        mem_limit: 1g
        memswap_limit: 2g
        links: 
            - foo_server_2:server
        container_name: foo_client_2_1
        ports: 
            - "22"
            - "5900"
            - "4567"
        networks: 
            - client_net_2
    foo_client_2_2: 
        image: foo_client:latest
        mem_limit: 1g
        memswap_limit: 2g
        links: 
            - foo_server_2:server
        container_name: foo_client_2_2
        ports: 
            - "22"
            - "5900"
            - "4567"
        networks: 
            - client_net_2
networks: 
    foo_server_network: 
    client_net_1: 
    client_net_2: 

Powershell-docker ps-a的输出:

D:\dockerTemp> docker ps -a
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS
PORTS                                                                                                    NAMES
e29f75524e11        foo_client:latest           "/scripts/start.sh"      6 minutes ago       Up 6 minutes
5901/tcp, 6901/tcp, 12345/tcp, 0.0.0.0:33498->22/tcp, 0.0.0.0:33497->4567/tcp, 0.0.0.0:33496->5900/tcp   foo_client_1_1
fb1b4169fff4        foo_client:latest           "/scripts/start.sh"      6 minutes ago       Up 6 minutes
5901/tcp, 6901/tcp, 12345/tcp, 0.0.0.0:33501->22/tcp, 0.0.0.0:33500->4567/tcp, 0.0.0.0:33499->5900/tcp   foo_client_1_2
cb6af51a0ffb        foo_client:latest           "/scripts/start.sh"      6 minutes ago       Up 6 minutes
5901/tcp, 6901/tcp, 12345/tcp, 0.0.0.0:33495->22/tcp, 0.0.0.0:33494->4567/tcp, 0.0.0.0:33493->5900/tcp   foo_client_2_1
6f436f5b3d7c        foo_client:latest           "/scripts/start.sh"      6 minutes ago       Up 6 minutes
5901/tcp, 6901/tcp, 12345/tcp, 0.0.0.0:33492->22/tcp, 0.0.0.0:33491->4567/tcp, 0.0.0.0:33490->5900/tcp   foo_client_2_2
3844553d31a4        foo_server:latest           "/scripts/foo_server"   6 minutes ago       Up 6 minutes
0/tcp, 5901/tcp, 6901/tcp, 12345/tcp, 0.0.0.0:33489->22/tcp, 0.0.0.0:33487->4567/tcp                     foo_server_2
92bcd4273e34        foo_server:latest           "/scripts/foo_server"   6 minutes ago       Up 6 minutes
0/tcp, 5901/tcp, 6901/tcp, 12345/tcp, 0.0.0.0:33488->22/tcp, 0.0.0.0:33486->4567/tcp                     foo_server_1

0 个答案:

没有答案