Docker无法访问容器内的暴露端口

Docker无法访问容器内的暴露端口,docker,dockerfile,Docker,Dockerfile,我有一个容器,我为它公开我的端口以访问在容器中运行的服务。我没有将我的端口暴露在容器外,即暴露在主机上(使用mac上的主机网络)。使用exec-t进入容器并为post请求运行curl时,我得到错误: curl命令:curlhttp://localhost:19999 连接本地主机失败:19999;连接被拒绝 我在dockerfile中有expose命令,不想向主机公开端口。我的服务也在容器内启动并运行。我还将config中的属性设置为 “ExposedPorts”:{“19999/tcp”:{}

我有一个容器,我为它公开我的端口以访问在容器中运行的服务。我没有将我的端口暴露在容器外,即暴露在主机上(使用mac上的主机网络)。使用
exec-t
进入容器并为post请求运行curl时,我得到错误:

curl命令:curlhttp://localhost:19999
连接本地主机失败:19999;连接被拒绝

我在dockerfile中有expose命令,不想向主机公开端口。我的服务也在容器内启动并运行。我还将config中的属性设置为
“ExposedPorts”:{“19999/tcp”:{}}
(通过“docker inspect”获得\n了解为什么不起作用吗?使用docker for Mac


我也会发布我的docker compose文件,但这是通过maven构建的。我可以确保我使用19999:19999公开我的端口。另一个奇怪的问题是,在禁用我的代理时,它会为我的自定义服务运行一个非常轻量的命令,不会再次运行它,并返回与上面相同的错误。该问题只发生在我的机器上而不是其他人提示:
应用程序必须在端口
19999
上侦听,而端口可能不是。
您在Dockerfile中使用的
EXPOSE
,没有任何作用

通常不需要更改应用程序侦听的默认端口,因此每个容器都有自己的IP,您不应该在端口冲突中运行

回答:
不要卷曲
19999
尝试使用默认端口,您的应用程序通常会在该端口上侦听(很难猜测您正在尝试运行什么)。

如果您不发布端口(使用
docker run-p
选项或docker Compose
端口:
选项),您无法直接访问Docker for Mac上的容器。有关Mac文档,请参阅Docker桌面中的:“每个容器IP地址不可能”项是您正在尝试的内容

docker-inspect
IP地址基本上是无用的,除非是在一个非常特定的docker配置中(在本机Linux主机上,从docker外部调用,在同一台主机上);我不会费心查找它


Dockerfile
EXPOSE
指令和类似的运行时选项所起的作用很小,主要用作文档。即使您已进行了配置,在启动容器以从Docker空间外部访问该端口时,您仍然需要单独发布该端口。

您是否可以通过将端口转发到docker主机?请提供docker文件curl命令和服务器端代码的代码片段