无法远程访问Docker容器问题排查求助
Docker容器Web服务外部无法访问问题
我有一个基于Debian的自定义Docker镜像,主要是安装了一些额外软件包并复制配置文件搭建Web服务器,但外部无法访问该Web服务。
构建完成后,我使用以下命令运行镜像:
docker container run --publish 8080:80 --name ipcast -t -d ipcast
排查过程
- 首先怀疑防火墙未开放端口,但多次检查后确认,通往Docker主机的所有节点的端口均已开放。
- 在远程机器上执行
nmap -p 8080 ourdockerserver.com,结果如下:
PORT STATE SERVICE 8080/tcp closed http-proxy
状态为closed而非filtered,说明端口未被防火墙过滤,只是没有进程在监听。
- 但在Docker主机上执行
netstat -tulpn时,能看到8080端口处于监听状态:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 579620/docker-proxy
- 在Docker主机上执行
nmap -p 8080 localhost也显示正常:
PORT STATE SERVICE 8080/tcp open http-proxy
尝试的解决方法
- 我对IP Tables了解不多,但从未见过端口本地可用但外部显示关闭且未被防火墙过滤的情况,推测可能和Docker在主机上的端口转发机制有关,但查阅资料后仍无法解决。
- 尝试创建自定义桥接网络:
docker network create -d bridge my-net
并用以下命令运行容器:
docker container run --network my-net --publish 8080:80 --name ipcast -t -d ipcast
但这也没有效果……
内容的提问来源于stack exchange,提问作者Matthew Knill
相关产品推荐
相关产品推荐

