假设我有一个应用程序,它在网络中的多台计算机上运行,并通过网络与其自身的其他实例进行通信。我想在一台机器上测试它,并让每个实例相信它在网络中的单独计算机上运行。我如何通过 docker 执行此操作?
最佳答案
正如上面评论中提到的“h”,桥接网络驱动程序会为您完成此操作。此驱动程序是默认驱动程序,因此如果您在主机上运行多个容器,它们应该能够通过 IP 相互访问。
如果您需要 DNS 解析,则需要定义一个桥接网络,因为默认桥接网络不会为您提供该功能。
详情请访问https://docs.docker.com/engine/userguide/networking/
这是一个使用自定义桥接网络的简单演示:
创建网络:
$ docker network create mynet
在该网络上启动一些命名容器:
$ docker run --rm -d --name one --net mynet nginx:latest
$ docker run --rm -d --name two --net mynet nginx:latest
从每个容器中,您应该能够解析并命中其他容器:
一 -> 二:
$ docker exec -it one ping two
PING two (172.18.0.3): 56 data bytes
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.098 ms
...
二 -> 一:
$ docker exec -it two ping one
PING one (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.192 ms
...
清理:
$ docker kill one two
$ docker network rm mynet
关于docker - 使用docker在单台计算机上模拟网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47925382/