我想在三个容器中创建一个由一个主服务器和两个从服务器组成的 PostgreSQL 集群。我想用 docker-compose 来做到这一点。一切正常,但我无法从我的 Mac ping 容器。
这是我的 docker-compose.yml 的代码。
在 Stackoverflow 上有这个线程How could I ping my docker container from my host that address docker Standalone 而不是 docker-compose。
version: '3.6'
volumes:
pgmaster_volume:
pgslave1_volume:
pgslave2_volume:
services:
pgmaster:
container_name: pgmaster
build:
context: ../src
dockerfile: Dockerfile
image: docker-postgresql:latest
environment:
NODE_NAME: pgmaster # Node name
ports:
- 5422:5432
volumes:
- pgmaster_volume:/home/postgres/data
networks:
cluster:
ipv4_address: 10.0.2.31
aliases:
- pgmaster.domain.com
pgslave1:
container_name: pgslave1
build:
context: ../src
dockerfile: Dockerfile
image: docker-postgresql:latest
environment:
NODE_NAME: pgslave1 # Node name
ports:
- 5441:5432
volumes:
- pgslave1_volume:/home/postgres/data
networks:
cluster:
ipv4_address: 10.0.2.32
aliases:
- pgslave1.domain.com
pgslave2:
container_name: pgslave2
build:
context: ../src
dockerfile: Dockerfile
image: docker-postgresql:latest
environment:
NODE_NAME: pgslave2 # Node name
ports:
- 5442:5432
volumes:
- pgslave2_volume:/home/postgres/data
networks:
cluster:
ipv4_address: 10.0.2.33
aliases:
- pgslave2.domain.com
networks:
cluster:
driver: bridge
ipam:
config:
- subnet: 10.0.2.1/24
在我的 Mac 上,我有一个 192.168.0.0 本地网络。我希望执行 ping 10.0.2.31 我可以 ping 我的容器,但这是不可能的。我认为这是由于在 Mac 内部创建的 Linux VM 存在容器,并且 IP 在此 VM 之外无法访问。
有人可以帮助我了解如何使上述三个 IP 可达吗?IP 可以从一个容器访问到另一个容器。