Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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容器进行局部卷曲?_Docker - Fatal编程技术网

如何正确设置Docker容器进行局部卷曲?

如何正确设置Docker容器进行局部卷曲?,docker,Docker,我明白了 当我尝试在localhost:8080处卷曲一个简单的docker容器时,应用程序正在侦听容器的localhost:8080 我已开始使用docker容器: curl: (52) Empty reply from server 只有0.0.0.0有效,但我不想使用它 我希望在我的应用程序配置中有一个主机不是0.0.0,它将允许我通过以下方式卷曲我的应用程序的healthcheck端点: host: localhost # (or 127.0.0.1, 127.0.0.2, 0.0.0

我明白了

当我尝试在
localhost:8080
处卷曲一个简单的docker容器时,应用程序正在侦听容器的
localhost:8080

我已开始使用docker容器:

curl: (52) Empty reply from server
只有
0.0.0.0
有效,但我不想使用它

我希望在我的应用程序配置中有一个主机不是
0.0.0
,它将允许我通过以下方式卷曲我的应用程序的healthcheck端点:

host: localhost # (or 127.0.0.1, 127.0.0.2, 0.0.0.0)
port: 8080

在我的本地机器上。我遗漏了什么?

实际上它必须是0.0.0.0,而且实际上应该是0.0.0.0,因为这意味着所有客户端都可以访问你的应用程序,包括试图连接到docker内部服务器的本地客户端。你可能已经知道,docker将docker端口公开给本地端口,这样您就可以执行localhost:8080/health,并且请求由docker容器提供服务。但是从请求的角度来看,它从本地机器开始,在那里它被代理到(可能)docker容器,并且该请求不再是该容器的本地请求。这就是0.0.0.0的原因,这样docker容器中的服务器就可以为所有请求提供服务,包括来自主机的请求。快速回答是-docker设置自己的网络,smth约172.x.x.x。运行docker inspect命令找到它。然后您将看到它的IP,但它是唯一的中间解决方案。@Rash和@h_uuuu,因此无法映射到容器中的特定主机,类似于
-p8080:8080
端口映射?我不能说,“将请求从我的
localhost
映射到docker容器的
localhost
”?使用一个简单的
curl localhost:8080/health
和我现有的
docker run…
命令,它将映射到容器中的哪个主机?当您启动一个服务器(如nginx或apache)时,它们会接受一个主机参数,该参数告诉它们主机的名称。如果将其设置为localhost,则表示主机名为127.0.0.1,这是docker机器的本地名称。如果您将其设置为主机IP,即192.x.x.x,那么它将能够为连接到家庭路由器的任何机器的请求提供服务。为什么?因为当您请求时,您会说将请求发送到哪里-因此只有那些可以访问主机的机器才能发送请求。当您说localhost时,您的主机无法到达docker机器的localhost。
host: localhost # (or 127.0.0.1, 127.0.0.2, 0.0.0.0)
port: 8080
curl localhost:8080/health