我有多个docker容器,他们需要以一种方式相互通信,当一个容器被设置为拥有一个ip地址时,这个ip地址在重启容器后不会改变。
建立跨容器通信的最佳方式是创建一个networking bridge。
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
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。