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端口未暴露Golang_Docker_Networking - Fatal编程技术网

Docker端口未暴露Golang

Docker端口未暴露Golang,docker,networking,Docker,Networking,我正在docker建立一个golang Web服务。构建看起来很好,但我无法为外部(容器外部)访问公开端口。当我从命令行(容器内部)卷曲时,应用程序似乎工作正常 我看到了不少类似问题的帖子,但不幸的是,许多帖子没有得到解决,或者似乎不适用 FROM golang:alpine RUN mkdir /go/src/webservice_refArch ADD . /go/src/webservice_refArch WORKDIR /go/src/webservice_refArch RUN ap

我正在docker建立一个golang Web服务。构建看起来很好,但我无法为外部(容器外部)访问公开端口。当我从命令行(容器内部)卷曲时,应用程序似乎工作正常

我看到了不少类似问题的帖子,但不幸的是,许多帖子没有得到解决,或者似乎不适用

FROM golang:alpine
RUN mkdir /go/src/webservice_refArch
ADD . /go/src/webservice_refArch
WORKDIR /go/src/webservice_refArch
RUN apk add curl
RUN cd /go/src/webservice_refArch/ && go get ./...
RUN cd /go/src/webservice_refArch/cmd/reference-w-s-server && go build -o ../../server
EXPOSE 7878
ENTRYPOINT ["./server", "--port=7878"]
我试过两种方法:

  • :7878
  • 本地主机:7878
请参见,仅在dockerfile中公开端口是不够的

您可以在启动容器时添加
-p 7878:7878
,或者使用
-p
让docker为您设置自动主机端口映射


如果您不想执行上述操作,也可以在启动容器时添加
--net=host
,然后容器将使用主机的网络,如果它也适用于您。

如果您试图从本地计算机访问docker容器内的端口,则需要将其映射到本地计算机上所需的端口

docker run-p 7878:7878图像

然后你应该可以在你的主机上访问它

我也面临同样的问题。然后我所做的是将ListernHost从localhost更改为0.0.0.0,它成功了


要在容器内部调试此curl,它工作正常,但在容器外部,curl的响应为空。端口已映射,但内容未在容器外部提供。一旦您将“localhost”更改为0.0.0.0,它将正常工作。

在使用
-p 7878:7878
参数运行容器时是否发布端口?非常感谢。有趣的是,“--net=host”有效,但“-P”或“-p7878:7878”都无效。当我点击“-net=host”时,我可以点击“localhost:7878/users/123”,它就可以工作了。当我这样做时,它就不起作用了。我尝试了:7878/users/123”,但出现了一个连接被拒绝的错误。我的网络显然有问题。你的docker版本是什么?windows上的docker还是linux上的docker?如果重新启动docker daemon,它能工作吗?或者你能试着使用
http://real_host_ip:7878/users/123
要访问非本地主机?