Docker端口转发:连接超时
Docker port forwarding: connection timed out
我正在使用 nginx:alpine
Docker 图片,运行 是这样的:
c@makina ~> docker run -itp 8000:80 nginx:alpine
端口在 lsof 中显示为侦听:
c@makina ~> sudo lsof -i :8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 3653 root 4u IPv4 2025067 0t0 TCP *:8000 (LISTEN)
但是,当我尝试访问它时,出现连接超时:
c@makina ~> http :8000
http: error: Request timed out (30s).
启动另一个带有 link 的容器到 nginx 容器允许我访问它,但是:
c@makina ~> docker run -it --link ${CONTAINER_ID}:nginx alpine:3.6 /bin/sh
/ # curl -s -D - -o /dev/null http://nginx/
HTTP/1.1 200 OK
...
docker0 网桥(以及 br-* 网桥和 veth* 接口)在主机上启动,并且 lo 和 eth0 在 nginx 容器中启动。
主机上的防火墙被禁用:
root@makina /h/c# service iptables status
* status: stopped
有什么想法吗?
我发现问题是环回接口没有启动。将它添加到 /etc/network/interfaces
和 运行 ifup lo
解决了这个问题。
我正在使用 nginx:alpine
Docker 图片,运行 是这样的:
c@makina ~> docker run -itp 8000:80 nginx:alpine
端口在 lsof 中显示为侦听:
c@makina ~> sudo lsof -i :8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 3653 root 4u IPv4 2025067 0t0 TCP *:8000 (LISTEN)
但是,当我尝试访问它时,出现连接超时:
c@makina ~> http :8000
http: error: Request timed out (30s).
启动另一个带有 link 的容器到 nginx 容器允许我访问它,但是:
c@makina ~> docker run -it --link ${CONTAINER_ID}:nginx alpine:3.6 /bin/sh
/ # curl -s -D - -o /dev/null http://nginx/
HTTP/1.1 200 OK
...
docker0 网桥(以及 br-* 网桥和 veth* 接口)在主机上启动,并且 lo 和 eth0 在 nginx 容器中启动。
主机上的防火墙被禁用:
root@makina /h/c# service iptables status
* status: stopped
有什么想法吗?
我发现问题是环回接口没有启动。将它添加到 /etc/network/interfaces
和 运行 ifup lo
解决了这个问题。