Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Docker容器中的hello world应用程序之间建立对话_Docker - Fatal编程技术网

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

在Docker容器中的hello world应用程序之间建立对话,docker,Docker,我试图在Docker内部运行我的hello world应用程序:前端需要从后端使用REST 我跑 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

我试图在Docker内部运行我的hello world应用程序:前端需要从后端使用REST

我跑

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 x64)使用浏览器连接到这两个系统:

http://127.0.0.1:1337
前端应用程序了解restful服务所在位置所需的参数。但应用程序无法连接到它们。我也无法连接

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
root@4b0852253b8a:/# apt-get install telnet
<...>
root@4b0852253b8a:/# telnet localhost 1337
Trying 127.0.0.1...
Trying ::1...
telnet: Unable to connect to remote host: Cannot assign requested address
root@4b0852253b8a:/#

PS:在询问之前,我几乎花了一整天的时间试图让它正常工作。

因为这两个容器是不同的,所以您必须暴露它们两个上的端口。使用以下命令运行第一个命令:

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

请注意,
bridge
是默认网络,因此您可以使用它。默认情况下,两个容器将位于同一个
网桥上。

问题在于127.0.0.1地址

默认情况下,每个容器分配了两个接口:eth0lo(具有127.0.0.1地址的环回接口)

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

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选项已被弃用,如中所述:

没有帮助。现在,我可以从主机操作系统访问第一个(后端)容器,但从第二个容器,它与以前一样不可用。我在问题中添加了截图。
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