在Docker容器中建立hello-world应用程序之间的对话

我试图在Docker中运行我的hello-world应用程序:前端需要从后端使用REST。在Docker容器中建立hello-world应用程序之间的对话

我跑

docker run -p 1337:1337 --net=bridge me/p-dockerfile-advanced-backend:latest 

docker run -p 1338:1338 --net=bridge me/p-dockerfile-advanced-frontend:latest http://127.0.0.1:1337

我能够使用浏览器从主机操作系统连接到他们两个(我的桌面Windows 10 64):

前端应用程序需要http://127.0.0.1:1337参数来知道宁静服务所在的位置。但该应用无法连接到它们。我无法连接。

Windows PowerShell 

Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Users\user1> docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

4b0852253b8a me/p-dockerfile-advanced-frontend:latest "/usr/bin/java -ja..." 24 minutes ago Up 24 minutes 0.0.0.0:1338->1338/tcp laughing_noyce

e73f8a6efa24 me/p-dockerfile-advanced-backend:latest "/usr/bin/java -ja..." 26 minutes ago Up 26 minutes youthful_chandrasekhar

PS C:\Users\user1> docker exec -it 4b0852253b8a bash

[email protected]:/# apt-get install telnet

<...>

[email protected]:/# telnet localhost 1337

Trying 127.0.0.1...

Trying ::1...

telnet: Unable to connect to remote host: Cannot assign requested address

[email protected]:/#

无法连接,但它应该是因为我指定的两个容器--net=bridge和后台侦听的端口1337:

[email protected]:/# netstat -lntu 

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:1337 0.0.0.0:* LISTEN

[email protected]:/#

PS:我花了几乎一整天试图使它询问这里工作之前。

回答:

问题是127.0.0.1地址。

每个容器分配,默认情况下,2个接口:的eth0和LO(用127.0.0.1地址回送接口)。

您需要指定上一个容器的名称或地址。对于这个简单的应用程序,您可以使用- 链接选项。

docker run -p 1337:1337 --name backend me/p-dockerfile-advanced-backend:latest 

docker run -p 1338:1338 --link backend:backend me/p-dockerfile-advanced-frontend:latest http://backend:1337

注意,如在规定的--link选项已过时: https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

回答:

由于这些是不同的容器,因此您必须在两者上公开端口。运行第一个:

docker run -p 1337:1337 --net=bridge me/p-dockerfile-advanced-backend:latest 

请注意bridge是默认网络,因此您是额外的。无论如何,这两个容器默认都会在同一个bridge网络中。

以上是 在Docker容器中建立hello-world应用程序之间的对话 的全部内容, 来源链接: utcz.com/qa/266551.html

回到顶部