docker端口映射host机无法访问

0x01.问题描述

docker使用端口映射,在host机无法使用映射端口访问docker container.
也就是说,我在docker开了个jupyter notebook,容器的8888端口映射到宿主机的32769端口,但是在宿主机host上无法使用32769端口访问jupyter notebook.

0x02.问题分析

查到有很多人说是ipv4端口转发未开启的问题,然而我并不是这个问题.
在谷歌云上开了个云主机,装了docker,然后查看网络信息.
使用ifconfig,谷歌云的docker0信息如下

 docker0   Link encap:Ethernet  HWaddr 02:42:03:2e:09:cb
          inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:3ff:fe2e:9cb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:532 errors:0 dropped:0 overruns:0 frame:0
          TX packets:363 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1350329 (1.3 MB)  TX bytes:45905 (45.9 KB)

与自己机器的docker0信息对比发现,我本机的docker0桥接居然没有ipv4地址(即inet addr).

0x03.问题解决

参考docker无法启动的文章

docker无法启动.md

0x04.解决方案检验

docker run -P jupyter/base-notebook
docker ps

docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                     NAMES
922bf18ec10c        jupyter/base-notebook   "tini -- start-not..."   22 seconds ago      Up 21 seconds       0.0.0.0:32769->8888/tcp   reverent_joliot

备注:使用-d后台运行jupyter notebook给出的一串token并不能登入,所以在一个terminal里以前台方式运行docker jupyter notebook,另一个terminal查看docker的端口映射情况


原创文章,转载请注明: 转载自张哲的博客

本文链接地址: docker端口映射host机无法访问