您的位置:首页 > 运维架构 > Docker

host网络模式(docker)下的端口映射

2018-11-21 17:18 9942 查看

Ⅰ. 先声明:

报错信息: "WARNING: Published ports are discarded when using host network mode" ,

原因:在使用 "--net=host" 网络配置模式后,端口无需通过 "-p" 参数映射

Ⅱ. 结论:

1、windows 下 "Docker Desktop" 版本,linux上(windows子系统)运行的容器[linux container,子系统] (可切换为 windows container,虚拟机??)默认分配到的 IP 在地址段10.0.75.0/255 里(这个网段...呃);

2、还是以上的条件,linux container。容器运行的时候,”docker-machine ls“ 得到的列表为空,所以 "docker-machine ssh default" 没有 "default" 这个机子,进不去。切换成 windows container 试试????????linux的镜像不能在 windows container 平台上使用。原来真的没有那层虚拟机了,windows container 平台不叼你,不会在 Windows 上运行虚拟机让你爽,乖乖的使用 linux container 在 linux 子系统上边玩吧,哈哈

[code]Sending build context to Docker daemon    336MB
Step 1/11 : FROM node:6.10.1
6.10.1: Pulling from library/node
image operating system "linux" cannot be used on this platform

Ⅲ. 以下是经过:

近日更新使用 windows 下 docker 环境,名为 “Docker Desktop”,之前叫做“Docker Toolbox”。

软件截图如下:

 在执行 docker run 命令时公用了参数 "--net=host" 和参数 "-p" ,然后就被警告了 "WARNING: Published ports are discarded when using host network mode" ,意思就是采用了 "--net=host" 网络配置模式,再使用 "-p" 参数进行端口映射就不行了,我在linux 下使用 "docker ce 18.05.0" 版本的时候明明可以的呀,好气!!

[code]PS C:\Users\YUAN> docker run --net=host --name account -p 3005:3005 -p 10015:10015 veoer/account:1.0.0
WARNING: Published ports are discarded when using host network mode
... ...

然后我去掉了 "-p" 端口映射部分,以为不需要映射呢,访问 "http://127.0.0.1:3005" 拒绝访问!!而且我使用宿主机 3005 端口跑程序没报错,说明宿主机的 3005 端口并没有被占用,容器没有使用宿主机的 3005 端口。

在之前版本 "Docker Toolbox" 时代,windows 和 容器之间有一层虚拟机,使用 "docker-mechine ssh default" 就可以登陆虚拟机,如此只需要知道虚拟机的 IP 地址,知道映射的宿主机端口 PORT 就可以使用 "IP:PORT" 去访问项目了;

但是在当前版本 "Docker Desktop",是用 windows 子系统 linux (微软Microsoft love linux计划)去跑的,这样就没之前那层虚拟机了(这就是为什么 Docker Desktop 要求 windows10 专业版的原因,家庭版没有子系统功能),这就是之前我用 "http://127.0.0.1:3005" 这个 ip 去访问的原因。

现在我使用 "docker-machine ls" 查看的结果是空的??!!

[code]PS C:\Users\YUAN> docker ps -a
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS               NAMES
6ec5647ce810        veoer/account:1.0.0   "/bin/sh -c 'node ap…"   23 minutes ago      Up 23 minutes                           account
PS C:\Users\YUAN> docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS

容器都跑起来了,不关 docker-machine 的事 ?????

我到底该怎么去使用 "--net=host" 网络模式去访问我跑起来的项目,怎么访问??

Really fuck the dog !!!

可能和以下有关吧(从任务栏的图标菜单里找到的),子网 IP 地址默认是10.0.75.0,这是什么鬼??:

 有点门道了,想办法找找 10.0.75.0 掩码 255.255.255.0 所在的网段的 IP 试试,进入容器,下载 net-tools 使用 ifconfig 查看 IP 地址去,之前 我用 "docker inspect" 命令查看 容器 IP 无果,在容器中使用 "ifconfig" 命令将 172 和 192 开头的 IP 都试过了,不行,现在试试那个 10 开头的 IP 10.0.75.2 ,恰好在 网段内。

[code]root@linuxkit-00155d014209:/app# apt-get update
... ...
root@linuxkit-00155d014209:/app# apt-get install net-tools
... ...
root@linuxkit-00155d014209:/app# ifconfig
docker0   Link encap:Ethernet  HWaddr 02:42:de:0e:64:40
inet addr:172.17.0.1  Bcast:172.17.255.255  Mask:255.255.0.0
UP BROADCAST MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 02:50:00:00:00:01
inet addr:192.168.65.3  Bcast:192.168.65.255  Mask:255.255.255.0
inet6 addr: fe80::50:ff:fe00:1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:14376 errors:0 dropped:0 overruns:0 frame:0
TX packets:5424 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21205963 (20.2 MiB)  TX bytes:300130 (293.0 KiB)

hvint0    Link encap:Ethernet  HWaddr 00:15:5d:01:42:09
inet addr:10.0.75.2  Bcast:0.0.0.0  Mask:255.255.255.0
inet6 addr: fe80::215:5dff:fe01:4209/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:57 errors:0 dropped:7 overruns:0 frame:0
TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9474 (9.2 KiB)  TX bytes:1318 (1.2 KiB)

lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:65536  Metric:1
RX packets:2 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:140 (140.0 B)  TX bytes:140 (140.0 B)

然后去访问 "http://10.0.75.2:3005" 访问成功 !!!!!!!!!!!!

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐