我有以下系统配置:
我不知道如何针对此网络服务器发出基本的http请求,来自我的docker容器中的。
为了测试这个,我正在使用:
head
我尝试过的,主机名:
每次收到错误或超时。当我在本地运行curl命令时(不在docker和我的主机操作系统:X机器上),我能够成功发布http请求。
我无法断开Docker容器与用户定义网络的连接。我也无法将我的网络服务器添加到该网络,因为它没有在容器中运行。另外,我知道连接另一种方式(curl到在docker容器中运行的web服务器)是微不足道的,但这不是我的用例。
如何成功将http请求从作为用户定义网络一部分的docker容器路由到我的localhost网络服务器?
答案 0 :(得分:3)
您可以使用本地计算机的实际IP地址执行此操作。
例如,如果您的主机操作系统上的en0 IP是10.100.20.32 ,则可以运行:
docker exec testcontainer curl --data "foobaz=foo" http://10.100.20.32:9000/
将成功允许您发出http请求。
请注意,如果您是通过主机泊坞网络上的容器执行此操作,则这很简单,因为您可以直接访问localhost
或0.0.0.0
,而无需使用实际的计算机IP。
答案 1 :(得分:-1)
您可能想要检查容器的IP地址是什么 - 您可以通过运行docker inspect
找到它。
但是,如果您想使用docker机器IP访问容器中运行的服务器进程,那么您应该“公开”包含应用程序正在侦听的端口9000(使用Dockerfile) - 这样,您仍然需要计算9000容器端口映射到哪个端口(显示在通过$ docker ps
列出容器时。您还可以在启动容器时在命令行中指定端口绑定选项,如下所示:$ docker run -p 9000:9000 <your-container>
。