我有多个 docker 容器,它们需要相互通信,当容器设置为具有 IP 地址时,此 IP 地址在重新启动容器后不会更改。
建立容器间通信的最佳方法是创建网络桥。
- 创建网桥
docker network create <network-name>
例如:docker network create my-net
- 创建链接到之前创建的网桥的容器。
docker run --name <container-name> --network <network-name> <image>
例如:
docker run -d --rm --name my-bb1 --network my-net nginx:alpine
docker run -d --rm --name my-bb2 --network my-net nginx:alpine
- 从 my-bb2 访问 my-bb1
docker exec my-bb2 ping my-bb1
PING my-bb1 (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.165 ms
64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.184 ms
^C
容器名称将在重新启动之间保留。因此,只要容器名称不更改,您就可以在同一容器网络中访问它们。
我还强烈建议在涉及多个容器时使用 docker-compose 。