说,我有一个应用程序,它运行在网络上,在多台计算机上,通过网络与自身的其他实例进行通信。我想在一台机器上测试它并让每个实例相信它在一台独立的计算机上运行。我怎么能通过docker做到这一点?
答案 0 :(得分:1)
正如上面评论中提到的“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