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