Docker端口未暴露Golang
我正在docker建立一个golang Web服务。构建看起来很好,但我无法为外部(容器外部)访问公开端口。当我从命令行(容器内部)卷曲时,应用程序似乎工作正常 我看到了不少类似问题的帖子,但不幸的是,许多帖子没有得到解决,或者似乎不适用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
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
-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
要访问非本地主机?