docker - 使用docker在单台计算机上模拟网络

标签 docker dockerfile

假设我有一个应用程序,它在网络中的多台计算机上运行,​​并通过网络与其自身的其他实例进行通信。我想在一台机器上测试它,并让每个实例相信它在网络中的单独计算机上运行。我如何通过 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/

相关文章:

powershell - Docker Windows容器-DockerFile设置IIS默认文档

docker - 如何编写 dockerfile 以正确地从我的 github 中提取代码

java - 我如何控制Perfino代理的日志记录行为

postgresql - 检查 TestContainers 的内容

docker - Traefik v2和带路径的路由

docker - 防止在 docker run 上创建卷

python - 在 run -it/bin/bash 之外的 docker 容器中运行 python 脚本的问题

docker - 使用 Ansible 运行 'docker volume create'?

docker - Docker镜像构建的工作流程是什么?

node.js - 在Docker容器中访问Angular应用程序