我无法使用相互依赖的ipv6设置docker-compose容器

时间:2018-02-09 22:21:52

标签: docker docker-compose ipv6

我正在寻找一个解决方案,其中docker-compose和2个docker容器可以很好地通信,并且可以有一个可以桥接到外部地址的ipv6地址。

  • 主机操作系统:CentOS 7
  • docker version:17.12
  • docker-compose版本:1.9.0

我有一个docker compose文件,可以使用network_mode: "service:postgres"进行ipv4寻址,如下所示:

version: "2.1"
services:
    myApp:
        image: myApp:latest
        volumes:
                - myApp_home:/home/tio/
        network_mode: "service:postgres"
        command: /root/run.sh
        depends_on:
             - postgres
        restart: always

    postgres:
        image: postgres:9.6
        environment:
            - POSTGRES_USER=postgres
        volumes:
            - myApp_sql:/var/lib/postgresql/data
        ports:
            - "80:80"
            - "443:443"
volumes:
    myApp_home:
    myApp_sql:

使用此配置,我的应用程序可以连接到postgres,但我无法ping通其IPv6地址,也无法ping通IPv6,但可以 ping一个IPv4地址。

当我在下面的配置中使用network_mode: bridge时,通过IPv6进行ping操作可以双向工作,但是localg上不再提供postgres,因此我的应用程序需要知道postgres容器的IP地址。

version: "2.1"
services:
    myApp:
        image: myApp:latest
        volumes:
            - myApp_home:/home/tio/
        network_mode: bridge
        command: /root/run.sh
        depends_on:
            - postgres

    postgres:
        image: postgres:9.6
        environment:
            - POSTGRES_USER=postgres
        volumes:
            - myApp_sql:/var/lib/postgresql/data
        ports:
            - "80:80"
            - "443:443"
volumes:
    myApp_home:
    myApp_sql:

我希望能够通过IPv6 从容器中ping出来,并连接到localhost上的postgres。由于这适用于IPv4,我认为它不是一个错误,或者我在配置中遗漏了一些东西。

这是docker,docker-compose中的错误,还是有一些配置我可以network_mode: "service:postgres"允许ping IPv6?

0 个答案:

没有答案