Maorongrong smile like sunshine

容器间跨主机访问——自定义网桥


通过自定义网桥,实现容器互连。

转:Linux 网桥配置命令:brctl LINUX下的网络设置 ifconfig ,route,gateway(转)

Linux远程连接

(其中涉及的一点)Linux系统中是通过ssh服务实现的远程登录功能。默认ssh服务开启了22端口,而且当我们安装完系统时,这个服务已经安装,并且是开机启动的。所以不需要我们额外配置什么就能直接远程登录linux系统。ssh服务的配置文件为 /etc/ssh/sshd_config,你可以修改这个配置文件来实现你想要的ssh服务。比如你可以更改启动端口为36000.

因为是远程登录,所以你要登录的服务器一定会有一个IP或者主机名。 【使用密钥认证机制远程登录linux】 SSH服务支持一种安全认证机制,即密钥认证。所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。 ssh 的密钥认证就是使用了这一特性。服务器和客户端都各自拥有自己的公钥和密钥。

通过自定义网桥

假设Host1:202.117.16.183 Host2:202.117.16.189

1.分别在Host1和Host2创建虚拟网桥

## create bridge on host1,2 respectively
host1-ubuntu$ sudo apt-get install bridge-utils
host1-ubuntu$ sudo brctl addbr br0
host2-ubuntu$ sudo brctl addbr br1
## set bridge port and IP GW
host1-ubuntu$ sudo ifconfig br0 202.117.16.183 netmask 255.255.255.0
host1-ubuntu$ sudo ifconfig addif br0 eth0
host1-ubuntu$ sudo route add default gw 202.117.16.1
sudo ifup br0
host2-ubuntu$ sudo ifconfig br1 202.117.16.189 netmask 255.255.255.0
host2-ubuntu$ sudo ifconfig addif br1 eth0
host2-ubuntu$ sudo route add default gw 202.117.16.1
sudo ifup br1

2.更改Docker配置自定义网桥并设置容器IP地址范围

## Host1
host1-ubuntu$ sudo vim /etc/default/docker
## add at last
    DOCKER_OPS= -b=br0 --fixed-cidr=同主机网段ip
host1-ubuntu$ sudo service docker restart
host1-ubuntu$ sudo ps -ef | grep docker
root     16771     1  0 Jan12 ?        00:00:05 /usr/bin/docker daemon -b=br0
## Host2 as Host1

至此Host1上新建的容器可以直接ping到Host2上创建的容器

3.总结

优点:配置简单,不依赖第三方软件 缺点:容器与主机在同网段,需要小心划分容器ip地址;需要网段控制权,在生产环境中不易实现(保证整个网段可用,容器与主机同一网段);不容易控制;兼容性不佳。


Similar Posts

Comments