docker 网络 路由
通过在Docker宿主机上添加静态路由实现跨宿主机通信
模拟环境 主机1(192.168.58.144) 设置docker0 网关 (172.17.0.1/16)
主机2(192.168.58.145) 设置docker0 网关 (172.18.0.1/16)
修改方式 编辑 /etc/docker/daemon.json修改如下 两台主机分别设置不一样网关
{"bip":"172.18.0.1/16"}
重启docker
service docker restart
使用ifconfig查看docker0的ip是否修改
分别在两个主机上启动1个容器
docker run -itd --name s1 centos
分别查看ip 是否是 172.17.0.2和172.18.0.1
[root@cdh3 ~]# docker inspect s1 | grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "172.18.0.2",
"IPAMConfig": null,
"IPAddress": "172.18.0.2",
在主机144上 要求能访问 172.18段 添加路由
route add -net 172.18.0.0 netmask 255.255.0.0 gw 192.168.58.145
在主机145上 要求能访问 172.17段 添加路由
route add -net 172.17.0.0 netmask 255.255.0.0 gw 192.168.58.145
主机两台主机的 ip_forward功能必须开启 否则不会在网卡间转发
[root@cdh2 ~]# sysctl -a | grep net.ipv4.ip_forward
net.ipv4.ip_forward = 1
如果值不是 1 修改 /etc/sysctl.conf 添加一行
net.ipv4.ip_forward = 1
执行命令 sysctl -p 生效即可 成功后 互相ping对方的docker容器的ip发现成功
模拟环境图:
3》Pipework指定静态ip
Pipework是一个简单易用的Docker容器网络配置工具。由200多行shell脚本实现。通过使用ip、brctl、ovs-vsctl等命令来为Docker容器配置自定义的网桥、网卡、路由等。
使用新建的bri0网桥代替缺省的docker0网桥
bri0网桥与缺省的docker0网桥的区别:bri0和主机网卡之间是也是veth pair 可以为容器分配和主机相同的网段静态ip
模拟环境图
该方式创建的容器 使用none的网络模式 自己定义网桥和网卡等 启动容器时可以通过--net=none指定容器网络模式。
安装网桥
yum install -y bridge-utils
查看所有网桥
[root@cdh2 ~]# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242027435aa no
修改网络文件/etc/sysconfig/network-scripts/ifcfg-eno16777736
[root@cdh2 network-scripts]# more ifcfg-eno16777736
TYPE=Ethernet
#BOOTPROTO=dhcp
BOOTPROTO=none
#IPADDR=192.168.58.144
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=1c2310e2-e82e-4ce7-a1aa-60d05aa47f1e
DEVICE=eno16777736
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
BRIDGE="br-ex"
将静态ip相关注释 添加 BRIDGE=设备名称 添加一个新的网卡文件ifcfg-br-ex 内容
[root@cdh2 network-scripts]# more ifcfg-br-ex
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.58.144
NETMASK=255.255.255.0
GATEWAY=192.168.58.2
PREFIX=24
DNS1=192.168.58.2
NAME=br-ex
ONBOOT=yes
DEVICE=br-ex
重启网卡后 查看网络和网桥
root@cdh2 network-scripts]# ifconfig
br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.58.144 netmask 255.255.255.0 broadcast 192.168.58.255
inet6 fe80::20c:29ff:fe90:75c5 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:90:75:c5 txqueuelen 0 (Ethernet)
RX packets 268 bytes 24407 (23.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 136 bytes 17574 (17.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@cdh2 network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br-ex 8000.000c299075c5 no eno16777736
docker0 8000.0242027435aa no
下载pipework脚本
[root@cdh2 ~]# git clone https://github.com/jpetazzo/pipework.git
进入查看 其中有个文件pipework就是脚本
[root@cdh2 ~]# cd pipework
[root@cdh2 pipework]# ll
total 60
-rw-r--r-- 1 root root 75 Jun 6 11:28 docker-compose.yml
drwxr-xr-x 2 root root 23 Jun 6 11:28 doctoc
-rw-r--r-- 1 root root 11358 Jun 6 11:28 LICENSE
-rwxr-xr-x 1 root root 14698 Jun 6 11:28 pipework
-rw-r--r-- 1 root root 827 Jun 6 11:28 pipework.spec
-rw-r--r-- 1 root root 22328 Jun 6 11:28 README.md
将该脚本拷贝到/usr/local/bin目录 方便执行
[root@cdh2 pipework]# cp -rp pipework /usr/local/bin
分别添加容器 指定 none网络模式
docker run -itd --net none --name s1 centos
给容器制定固定ip
[root@cdh2 pipework]# pipework br-ex s1 192.168.58.142/24@192.168.58.144
[root@cdh2 pipework]# ping 192.168.58.142
PING 192.168.58.142 (192.168.58.142) 56(84) bytes of data.
64 bytes from 192.168.58.142: icmp_seq=1 ttl=64 time=0.249 ms
piepework参数
pipework 网桥名称 容器名称 容器固定ip/24@网桥ip
其他机器上ping 192.168.58.142发现成功
主机2配置同上即可
---------------------
作者:liaomin416100569
来源:CSDN
原文:https://blog.csdn.net/liaomin416100569/article/details/80350144
版权声明:本文为博主原创文章,转载请附上博文链接!
docker 网络 路由的更多相关文章
- [docker]docker网络-直接路由模式
linux namespace连接参考: http://www.cnblogs.com/iiiiher/p/8057922.html docker网络-直接路由模式 参考: https://www.y ...
- docker网络配置方法总结
docker启动时,会在宿主主机上创建一个名为docker0的虚拟网络接口,默认选择172.17.42.1/16,一个16位的子网掩码给容器提供了65534个IP地址.docker0只是一个在绑定到这 ...
- Docker网络详解
当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机.它会在挂载到它的网口之间进行转发. ...
- 【转】Docker网络详解及pipework源码解读与实践
好文必转 原文地址: http://www.infoq.com/cn/articles/docker-network-and-pipework-open-source-explanation-prac ...
- Docker网络模式
[编者的话] 本文是<Docker网络及服务发现>一书的一个章节,介绍了搭建Docker单主机网络的基础内容.关于Docker网络的更多内容,包括多主机的网络,请参考该书的其他章节. @C ...
- docker网络解析
Docker概念和默认网络 什么是Docker网络呢?总的来说,网络中的容器们可以相互通信,网络外的又访问不了这些容器.具体来说,在一个网络中,它是一个容器的集合,在这个概念里面的一个容器,它会通过容 ...
- Docker 网络之理解 bridge 驱动
笔者在前文<Docker 网络之进阶篇>中介绍了 CNM(Container Network Model),并演示了 bridge 驱动下的 CNM 使用方式.为了深入理解 CNM 及最常 ...
- Docker 网络之进阶篇
笔者在<Docker 基础 : 网络配置>一文中简单介绍了容器网络的基本用法,当时网络的基本使用方式还处于 --link 阶段.时过境迁,随着 docker 的快速发展,其网络架构也在不断 ...
- Docker网络和容器的通信
Docker的本地网络实现其实就是利用了Linux上的网络命名空间和虚拟网络设备(特别是veth pair). 基本原理 直观上看,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)与外界 ...
随机推荐
- CISCO 关闭4786端口解决方法
先确认交换机是否支持smart install服务 检查命令如下: switch#show vstack config | inc Role Role:Client (SmartInstall ena ...
- 初识html与css
---恢复内容开始--- PS应用量尺寸w.h- 操作方式: 窗口,信息,右上角面板选项,标尺单位,像素切图- 操作方式: 切片工具, 文件 ,另存为web所有格式,jpeg,存储,切片:选中的切片, ...
- C入门注意事项
C语言入门应该注意什么 进入IT行业,很多人一开始接触的都是C语言,C语言可以说是一门基础课程了,只要有了C语言的基础,那么以后不管是学什么语言都会比较容易上手.同时在学习其它语言时也可以 ...
- 小程序 map组件问题 cover-view问题
使用小程序的组件map时 在开发者工具上一切顺利 但是在真机预览时 发现地图的层级是最高的 任何标签都覆盖不了它 调整z-index值并没有什么效果 原因是 微信小程序的map.video.canva ...
- ORA-01555快照过旧报错
一.现象 将数据迁移到新库时,执行较大的存过,会报这个错误. 二.原因 产生该报错的原因: (1)sql执行比较久,需要优化sql (2)回滚段过小 (3)undo保存时间过短 三.具体检查及恢复 1 ...
- maven下载源码
能下载到源代码的原则是仓库中打了resource的jar包 1.使用命令 mvn dependency:sources 下载依赖包的源代码. mvn dependency:sources -Ddown ...
- cmake jni简说
CMake配置Jni开发 1 安装工具 2 新建项目,注意include C++ support选项 项目创建好后查看目录结构 新增三块.externalNativeBuild:cpp(c.c++代码 ...
- 利用js 生成不同li标签的点击事件
<ul> <li>click me</li> <li>你好啊2</li> <li>你好啊3</li> <li& ...
- QT自定义控件系列(二) --- Loading加载动画控件
本系列主要使用Qt painter来实现一些基础控件.主要是对平时自行编写的一些自定义控件的总结. 为了简洁.低耦合,我们尽量不使用图片,qrc,ui等文件,而只使用c++的.h和.cpp文件. 由于 ...
- vue2.0 + element-ui 通过vue-cli 脚手架搭建的有关网络安全的项目源代码
这次是我进入公司的练手项目,是第一次系统学习vue,做出来的demo是比较低端的,而且不太好看,见谅见谅. 源代码下载路径:https://github.com/Pandora-ps/vue-elem ...