host网络模式(docker)下的端口映射
Ⅰ. 先声明:
报错信息: "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" 访问成功 !!!!!!!!!!!!
阅读更多
- 使用iptables管理docker容器做端口映射网络
- win7用虚机搭建docker开发测试环境的网络配置,免去端口映射烦恼
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- 详解VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- Docker运行nginx镜像及docker网络端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- Docker 网络-端口映射、容器链接、Networking
- VMware、Docker虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- VirtualBox NAT网络模式 端口映射
- virtualbox NAT网络模式详解以及NAT模式下端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- docker:一个container映射多个端口到Host
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射