5.docker端口映射与容器互联

*端口映射

当容器运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数指定端口映射

-P:docker会随机映射一个49000~49900端口到内部

-p:指定端口映射,支持的格式有IP:HostPort:ContainerPort|IP::ContainerPort |IP::ContainerPort|HostPort:ContainerPort

映射所有接口地址:

docker run -d -p 5000:5000 ubuntu

映射到指定地址的指定接口:

docker run -d -p 127.0.0.1:5000:5000 ubuntu

映射到指定地址的任意端口:

docker run -d -p 127.0.0.1::5000 ubuntu

查看映射端口配置:

docker port container

*容器互联:

--link参数更新容器内环境变量和/etc/hosts文件的方式建立两个主机之间的联系

用法 --link name:alias

docker run -d --name test2 --link test1:test1 ubuntu

*Docker容器跨主机连接
第一种办法 使用网桥实现跨主机连接
1.sudo apt-get install bridge-utils
IP 地址: Host1:192.168.154.135
         Host2:192.168.154.136

2.配置网络 修改/etc/network/interfaces
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
address 192.168.154.136
netmask 255.255.255.0
gateway 192.168.154.2
bridge_ports eth0
sudo reboot
3.修改docker后台进程配置文件 /etc/default/docker
-b 指定使用自定义网桥
   -b=br0
--fixed-cidr 限制IP地址分配范围
--fixed-cidr=192.168.154.64/26    Host1:192.168.154.65~192.168.154.126
--fixed-cidr-192.168.154.128/26   Host2:192.168.154.129~192.168.154.190
 

优点:配置简单,不依赖第三方软件
缺点:容器与主机在同网段,需要小心划分IP地址
     需要有网段控制权,在生产环境中不易实现
     不容易管理
     兼容性不佳

第二种办法:使用Open vSwitch实现跨主机连接
Open VSwitch是什么?
Open VSwitch是一个高质量的,多层虚拟交换机,使用开源apache2.0许可协议,主要实现代码为可移植的c代码
它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议
实验环境:
安装Open VSwitch
apt-get install openvswitch-switch -y
安装网桥管理工具
apt-get install bridge-utils -y
IP 地址: Host1:192.168.154.135 br0:192.168.1.1/24
         Host2:192.168.154.136 br0:192.168.2.1/24

1.建立ovs网桥
sudo ovs-vsctl add-br obr0

2.为ovs网桥添加gre连接
sudo ovs-vsctl add-port obr0 gre0
Host1端:sudo ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.154.136
Host2端:sudo ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.154.135
3.配置docker容器虚拟网桥
sudo brctl add br0
host1端:sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0
host2端:sudo ifconfig br0 192.168.2.1 netmask 255.255.255.0

4.为虚拟网桥添加ovs接口
sudo brctl addif br0 obr0

5.添加不同docker容器网段路由
host1端:sudo ip route add 192.168.2.0/24 via 192.168.154.136 dev eth0
host2端:sudo ip route add 192.168.1.0/24 via 192.168.154.135 dev eth0


第三种办法:使用weave实现跨主机容器连接

sudo wget -O /usr/local/bin/weave https://raw.githubusercontent.com/zettio/weave/master/weave
sudo chmod a+x /usr/bin/weave

weave launch #启动weave
c1=$(weave run 192.168.1.10/24 -it --name wc1 ubuntu /bin/bash)


OaaS
Orchesrate as a Service的目标是协调在不同Host上的Container,把他们有机的组织在一起
成为一个统一的系统
解决Container的协调管理
单个数据中心单节点/多个节点跨数据中心
Container之间的网络通信

猜你喜欢

转载自www.cnblogs.com/soulmates/p/9242926.html