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作为外网前置,方便管理。
如果我们是在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作为外网前置,方便管理。
相关文章推荐
- Xcode5 + phoneGap2.9搭建ios开发环境-配置-测试-归档上传/phoneG...
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- openstack controller ha测试环境搭建记录(十一)——配置neutron(网络节点)
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- 详解VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- Win7 X64下MASM5.0开发环境搭建及配置
- Xcode5 + phoneGap2.9搭建ios开发环境-配置-测试-归档上传/phoneG...
- Win7(64)+Eclipse+Hadoop2.6.4开发环境搭建--转载记录一下,虽然还没有配置成功
- 前端开发之配置-移动端真机测试环境的搭建小白教程
- Xcode5 + phoneGap2.9搭建ios开发环境-配置-测试-归档上传/phoneG.
- linux开发环境搭建-----虚拟机和windows的网络连接原理+具体配置。
- win7下搭建GO开发环境 - eclipse 配置GO开发
- win7搭建android开发环境——离线一体化配置Eclipse+ADT+SDK
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- VirtualBox虚拟机网络环境解析和搭建-NAT、桥接、Host-Only、Internal、端口映射
- win7环境下eclipse,c++,cocos2dx游戏开发环境搭建(分享配置经验)
- CentOS 6 for colinux的网络配置——《Windows下搭建CentOS 6开发环境之二》