Docker 容器之间的网络

Docker 容器之间的网络

我正在将我的应用程序转换为容器,但很难让两个容器通过主机的接口相互通信。

配置方面,我的每个应用程序都是这样设置的:

app1: Listens for incoming socket connections on 127.0.0.1:4444
app2: Connects to the socket server on 127.0.0.1:4444

Docker 明智地我以这种方式启动我的应用程序:

docker run -p 4444:4444 -itd --name app1 app1
docker run -itd --name app2 app2

app2 无法连接到 app1。我遇到了麻烦。我该如何调试?

编辑:

看起来容器内的 127.0.0.1 不是正确的选择。这会将服务器/客户端绑定到 lo 接口,而不是与主机的桥接接口。

相反,docker 可以通过创建新的 docker 网络根据 --name 执行一些自动 DNS:

# docker network create myapp
# docker run --network myapp -p 4444:4444 -itd --name app1 app1
# docker run --network myapp -itd --name app2 app2

在 docker 容器内部,服务器不再绑定并连接到 127.0.0.1,而是绑定到 app1:4444,客户端连接到 app1:4444。主机名将解析为 docker 分配的桥接 IP。

问题: 虽然现在我可以看到 IP 解析正确,但连接最终会超时。

相关内容