我在docker上运行了beego web服务器并映射端口8080到主机8006 为什么主机浏览器无法正常显示
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
启动docker容器的命令呢,是怎样的?
docker run -it -p 8006:8080 -v /Users/Go:/go -w /go/src/projectname golang:latest bee run
我试了一下,可以访问到
你可以在主机上检查端口映射
$ sudo iptables -t nat -nL
我的就有这样一条输出
Chain DOCKER (2 references) target prot opt source destination DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8006 to:172.17.0.2:8080
如果你的也有,再在主机上看看8006端口是否成功监听
netstat -ln | grep 8006
我的有这样的输出
tcp6 0 0 :::8006 :::* LISTEN
我试了一下,可以访问到  你可以在主机上检查端口映射 ```shell $ sudo iptables -t nat -nL ``` 我的就有这样一条输出 ```shell Chain DOCKER (2 references) target prot opt source destination DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8006 to:172.17.0.2:8080 ``` 如果你的也有,再在主机上看看8006端口是否成功监听 ```shell netstat -ln | grep 8006 ``` 我的有这样的输出 ```shell tcp6 0 0 :::8006 :::* LISTEN ```
我的是mac,貌似有网络问题需要解决,需要pfctl命令和修改配置文件
docker port compassionate_poitras 显示 8080/tcp -> 0.0.0.0:8006
主机 ifconfig
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 10:40:f3:f0:01:cc inet6 fe80::1240:f3ff:fef0:1cc%en1 prefixlen 64 scopeid 0x5 inet 192.168.1.101 netmask 0xffffff00 broadcast 192.168.1.255 nd6 options=1<PERFORMNUD> media: autoselect status: active vboxnet1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 ether 0a:00:27:00:00:01 inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
inet 192.168.1.101 netmask 0xffffff00 broadcast 192.168.1.255 inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
我怀疑是需要做这两个ip的forwording?
好吧,正解是eval (docker-machine env default) 里面的default 一定要打,否则不会做port forwording
忽略这条
`单行代码`
启动docker容器的命令呢,是怎样的?
docker run -it -p 8006:8080 -v /Users/Go:/go -w /go/src/projectname golang:latest bee run
我试了一下,可以访问到
你可以在主机上检查端口映射
我的就有这样一条输出
如果你的也有,再在主机上看看8006端口是否成功监听
我的有这样的输出
我的是mac,貌似有网络问题需要解决,需要pfctl命令和修改配置文件
docker port compassionate_poitras 显示 8080/tcp -> 0.0.0.0:8006
主机 ifconfig
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 10:40:f3:f0:01:cc inet6 fe80::1240:f3ff:fef0:1cc%en1 prefixlen 64 scopeid 0x5 inet 192.168.1.101 netmask 0xffffff00 broadcast 192.168.1.255 nd6 options=1<PERFORMNUD> media: autoselect status: active vboxnet1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 ether 0a:00:27:00:00:01 inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
inet 192.168.1.101 netmask 0xffffff00 broadcast 192.168.1.255 inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
我怀疑是需要做这两个ip的forwording?
好吧,正解是eval (docker-machine env default) 里面的default 一定要打,否则不会做port forwording
忽略这条