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

win7用虚机搭建docker开发测试环境的网络配置,免去端口映射烦恼

2017-04-23 17:59 1116 查看
之前有写过一篇centos6.4使用docker,使用的是NAT网络模式,外部网络想要访问容器服务,只能通过端口转发。

如果我们是在win7系统上使用虚拟机的centos6.4来安装docker做开发测试研究,那么网络环境很复杂,要对外提供服务,层层端口转发管理起来会崩溃。

场景:win7(路由器上网)                本地网卡   ip 192.168.2.195  网关192.168.2.1 子网192.168.2.0   掩码255.255.255.0

         win7虚拟网卡                         vmnet8   ip 192.168.1.2      网关192.168.1.1  子网192.168.0.0   掩码255.255.0.0

        docker宿主机(虚拟机centos)    eth0       ip 192.168.1.3      网关192.168.1.1   子网192.168.0.0   掩码255.255.0.0  

docker默认添加一个网卡docker0,网段在172.17.42.0/24,相当于用宿主机构建了一个路由器,形成内部网络,我们要想在win7直接连接到容器ip,就得使用自定义网桥,而且ip段分配很重要。

网络流转路线

win7->宿主机->容器

这里我们使用192.168.0.0/16将形成一个大的网络,win7所在路由器局域网在192.168.2.0/24段,宿主机使用192.168.1.0/24段,容器使用192.168.0.0/24段,就可以使容器跟局域网其他主机在一个网络下实现互通。

一、配置docker自定义网桥

1、删除docker默认添加的docker0

brctl delbr docker0

2、添加一个新网卡docker0 

brctl addbr docker0

3、将docker0与eth0使用网桥连接

brctl addif docker0 eth0

4、配置网卡

先从eth0复制一份docker0

cp etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-docker0

修改eth0,不设置ip、掩码、网关等

vi /etc/sysconfig/network-scripts/ifcfg-eth0

BOOTPROTO=none

:wq保存

修改docker0的配置

vi /etc/sysconfig/network-scripts/ifcfg-docker0

DEVICE=docker0

BOOTPROTO=static

IPADDR=192.168.1.3

NETMASK=255.255.254.0

GATEWAY=192.168.1.1

:wq保存

重启网络服务,网桥配置成功此时可在win7上ping 192.168.1.3  在宿主机上ping 192.168.1.2验证网络是否畅通。

service network restart

然而,因为win7所在路由器网络的子网不是设置为192.168.0.0/16,ping 192.168.2.0段是不通的,如能修改,则需要修改路由器配置。

二、docker默认网络配置

1、创建docker运行的配置文件(如果文件夹不存在,手工创建) 

mkdir -p /etc/systemd/system/docker.service.d sudo

2、添加配置文件,注意如果是其他linux版本,位置可能不同,如ubuntu 的不是/etc/sysconfig/docker,而是/etc/default/docker

vi /etc/systemd/system/docker.service.d/docker.conf

[Service] EnvironmentFile=-/etc/sysconfig/docker ExecStart=/usr/bin/docker -d $OPTIONS \ $DOCKER_STORAGE_OPTIONS \ $DOCKER_NETWORK_OPTIONS \ $BLOCK_REGISTRY \ $INSECURE_REGISTRY

3、修改docker服务启动默认网络

vi /etc/sysconfig/docker

DOCKER_OPTIONS="--bip=192.168.1.3 --fixed-cidr=192.168.0.0/16"

--bip= 是绑定默认网卡docker0的ip

--fixed-cidr=是设置网卡docker0的子网网段,这里因为docker自动管理网段,不是通过dhcp分配,可能会与现有网络ip冲突,尽量选一个空闲的网段

4、重新启动docker,我发现自定义网桥必须用docker0,不然又会重新创建默认的

service docker restart

三、创建容器,验证网络互联

1、启动一个不带网络的容器(centos是我使用的镜像,自行准备)

docker run --name test --privileged=true -it centos /bin/bash

2、在容器中ifconfig查看ip,看是否分配的192.168.0.1

然后ping 192.168.1.3 验证与宿主机互联

接着ping 192.168.1.2 验证与win7互联

3、在宿主机验证网络

ping 192.168.1.2 验证宿主机与win7互联

ping 192.168.0.1 验证宿主机与容器互联

4、在win7验证网络

ping 192.168.1.3 验证win7与宿主机互联

ping 192.168.0.1 验证win7与容器互联

网络到此搭建完毕,这样win7就可以使用SSH工具任意连接容器而免去要通过宿主机端口映射的烦恼。

想要通过win7发布到公网,则可以将公网端口80映射到win7,然后搭建nginx做转发,win7作为外网前置,方便管理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐