Docker暴露的端口在浏览器上不可用,尽pipe前者运行正常

我在Virtual Box上使用docker,并尝试添加一个图像运行。

我有的第一个“跑”是

$ docker run -Pit --name rpython -p 8888:8888 -p 8787:8787 -p 6006:6006 -p 8022:22 -v /c/Users/lenovo:/home/dockeruser/hosthome datascienceschool/rpython $ docker port rpython 8888/tcp -> 0.0.0.0:8888 22/tcp -> 0.0.0.0:8022 27017/tcp -> 0.0.0.0:32781 28017/tcp -> 0.0.0.0:32780 5432/tcp -> 0.0.0.0:32783 6006/tcp -> 0.0.0.0:6006 6379/tcp -> 0.0.0.0:32782 8787/tcp -> 0.0.0.0:8787 

它工作正常,在本地浏览器通过这些tcp。 但关于第二个“跑步”

 docker run -Pit -i -t -p 8888:8888 -p 8787:8787 -p 8022:22 -p 3306:3306 -- name ubuntu jhleeroot/dave_ubuntu:1.0.1 $ docker port ubuntu 22/tcp -> 0.0.0.0:8022 3306/tcp -> 0.0.0.0:3306 8787/tcp -> 0.0.0.0:8787 8888/tcp -> 0.0.0.0:8888 

它不起作用。

 root@90dd963fe685:/# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.2/16 scope global eth0 valid_lft forever preferred_lft forever 

任何想法呢?

你的第一个命令运行一个图像( datascienceschool/rpython ),大概是踢了一个python应用程序,它必须听你正在testing的端口。

你的第二个命令运行一个不同的图像( jhleeroot/dave_ubuntu:1.0.1 ),并从粘贴的输出,你只在该图像中运行一个bash shell。 Bash不会监听容器内的这些端口,因此docker将转发到一个封闭的端口,浏览器将看到一个closures的连接。

Docker不会为你的监听端口运行服务器,它依靠你在容器内运行它,它只是转发请求。