docker映射端口到linux host主机端口,但该端口无法访问的问题记录

博客讲述了在Docker环境下,尝试将webapp容器的5000端口映射到主机的6666端口时遇到的问题。虽然端口映射成功,但通过Google Chrome浏览器访问时出现ERR_UNSAFE_PORT错误,而使用IE浏览器则可以正常访问。问题的原因是Chrome浏览器限制了部分端口作为安全原因。解决方案是修改Chrome启动参数,允许指定端口。此外,文章还提到了其他可正常访问的端口如6655和8888。

docker 映射端口到host主机 6666 端口,但该端口不可访问的问题记录

问题背景

下载training/webapp后,运行该容器默认会打开一个5000端口的helloworld示例Web工程。

想将该默认5000端口映射至主机的 6666端口,发现外网无法访问该端口。其他端口(比如6655或者8888)等均可正常访问

先记录下问题,以后有机会再详细看下。

[root@miniserver ~]# docker pull training/webapp
Using default tag: latest
latest: Pulling from training/webapp
Image docker.io/training/webapp:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
e190868d63f8: Pull complete 
909cd34c6fd7: Pull complete 
0b9bfabab7c1: Pull complete 
a3ed95caeb02: Pull complete 
10bbbc0fc0ff: Pull complete 
fca59b508e9f: Pull complete 
e7ae2541b15b: Pull complete 
9dd97ef58ce9: Pull complete 
a4c1b0cb7af7: Pull complete 
Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
Status: Downloaded newer image for training/webapp:latest
docker.io/training/webapp:latest
[root@miniserver ~]# 
[root@miniserver ~]# docker run -d -p 6655:5000 training/webapp python app.py  # 将容器的5000端口映射至host的6655端口
78dd53fcc94d23b696189ea38436537d8d0da21389cea20f1102a43efb092cb2
[root@miniserver ~]# 
[root@miniserver ~]# docker run -d -p 6666:5000 training/webapp python app.py
bf30c05ae9c1eb29d2c696e791a7fe2682ebe9c379cdcc827c86ce939125d9bd
[root@miniserver ~]# 
[root@miniserver ~]# docker run -d -p 8888:5000 training/webapp python app.py
9a3b04b0f29ceb8e527100cf71b3a8edbec2f566c12af2ba86842733b21f9a1a
[root@miniserver ~]# 
[root@miniserver ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND           CREATED          STATUS          PORTS                                       NAMES
9a3b04b0f29c   training/webapp   "python app.py"   4 seconds ago    Up 4 seconds    0.0.0.0:8888->5000/tcp, :::8888->5000/tcp   exciting_wing
bf30c05ae9c1   training/webapp   "python app.py"   14 seconds ago   Up 14 seconds   0.0.0.0:6666->5000/tcp, :::6666->5000/tcp   modest_kepler
78dd53fcc94d   training/webapp   "python app.py"   19 seconds ago   Up 18 seconds   0.0.0.0:6655->5000/tcp, :::6655->5000/tcp   cranky_keller
[root@miniserver ~]# 

通过命令查看,主机的6666端口确定已经打开了

[root@miniserver ~]# netstat -anp | grep 6666
tcp        0      0 0.0.0.0:6666            0.0.0.0:*               LISTEN      12504/docker-proxy  
tcp6       0      0 :::6666                 :::*                    LISTEN      12510/docker-proxy  
[root@miniserver ~]# netstat -anp | grep 6655
tcp        0      0 0.0.0.0:6655            0.0.0.0:*               LISTEN      12408/docker-proxy  
tcp6       0      0 :::6655                 :::*                    LISTEN      12414/docker-proxy  
[root@miniserver ~]# netstat -anp | grep 8888
tcp        0      0 0.0.0.0:8888            0.0.0.0:*               LISTEN      12600/docker-proxy  
tcp6       0      0 :::8888                 :::*                    LISTEN      12607/docker-proxy  
[root@miniserver ~]# 

docker 主机的ip地址信息

[root@miniserver ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:c0ff:fe93:4839  prefixlen 64  scopeid 0x20<link>
        ether 02:42:c0:93:48:39  txqueuelen 0  (Ethernet)
        RX packets 420  bytes 27016 (26.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 446  bytes 47474 (46.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.176.129  netmask 255.255.255.0  broadcast 192.168.176.255
        inet6 fe80::3914:8e0f:c1e6:d651  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:01:7c:fe  txqueuelen 1000  (Ethernet)
        RX packets 7078  bytes 591406 (577.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6223  bytes 1191126 (1.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

无法访问6666端口的问题web截图如下:
chrome

问题原因

测试环境使用的是Google Chrome浏览器,由上图,可以看到Chrome提示了ERR_UNSAFE_PORT错误,在网上搜索了下,发现Chrome浏览器有默认非安全端口列表,搭建网站要建议尽量避免以下端口。

默认非安全端口列表如下:

  1,    // tcpmux
  7,    // echo
  9,    // discard
  11,   // systat
  13,   // daytime
  15,   // netstat
  17,   // qotd
  19,   // chargen
  20,   // ftp data
  21,   // ftp access
  22,   // ssh
  23,   // telnet
  25,   // smtp
  37,   // time
  42,   // name
  43,   // nicname
  53,   // domain
  77,   // priv-rjs
  79,   // finger
  87,   // ttylink
  95,   // supdup
  101,  // hostriame
  102,  // iso-tsap
  103,  // gppitnp
  104,  // acr-nema
  109,  // pop2
  110,  // pop3
  111,  // sunrpc
  113,  // auth
  115,  // sftp
  117,  // uucp-path
  119,  // nntp
  123,  // NTP
  135,  // loc-srv /epmap
  139,  // netbios
  143,  // imap2
  179,  // BGP
  389,  // ldap
  465,  // smtp+ssl
  512,  // print / exec
  513,  // login
  514,  // shell
  515,  // printer
  526,  // tempo
  530,  // courier
  531,  // chat
  532,  // netnews
  540,  // uucp
  556,  // remotefs
  563,  // nntp+ssl
  587,  // stmp?
  601,  // ??
  636,  // ldap+ssl
  993,  // ldap+ssl
  995,  // pop3+ssl
  2049, // nfs
  3659, // apple-sasl / PasswordServer
  4045, // lockd
  6000, // X11
  6665, // Alternate IRC [Apple addition]
  6666, // Alternate IRC [Apple addition]
  6667, // Standard IRC [Apple addition]
  6668, // Alternate IRC [Apple addition]
  6669, // Alternate IRC [Apple addition]

如果一定要使用上述端口的解决办法

选中Google Chrome 快捷方式,右键属性,在”目标”对应文本框添加:

–explicitly-allowed-ports=87,6666,556,6667

  • 不过6666端口无法访问的问题,在IE浏览器中不存在,可正常访问。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值