需要使用docker将golang的httpserver容器化。在这个过程中遇到了一个低级问题,golang http服务时端口无法访问,特此记录解决这个问题的过程。,问题描述: docker镜像启动成果之后,通过curl不能访问:,go文件:main.go,Dockerfile文件:,发现curl无法访问docker容器中的服务,telnet结果如下:,于是,打算采用命令进入docker容器内部查看:,通过docer ps -a 得到容器id为dfb2b46abd34。进入容器:,可以看到,在容器内部实际上8360端口已经被监听。容器访问应该不存在问题。 容器内部支持wget:,可以看到在docker服务内部运行是正常的。,查看其网络端口衍射:,端口衍射也不存在问题。那么问题究竟出在什么地方呢? 忽然想到,容器内部的nestat监听端口是127.0.0.1,于是瞬间明白了。 在容器内部的监听端口为127.0.0.1的话,那么只能接受容器内部来自127.0.0.1的本地回环访问。来自容器外外部的访问请求将被拒绝。 因此,这个问题的修复原因实际上很简单,只需要将main.go的中监听ip改为0.0.0.0即可。,果断将监听ip改为0.0.0.0:,之后重新制作镜像:,然后启动本地镜像:,启动之后:,之后再访问新增的容器,结果正常:,问题解决。