docker 容器多物理机不同容器通信 pipework

1.依赖软件

  • util-linux:实现docker-enter命令
  • pipework:整合Docker的inspect功能,指定Docker容器的IP地址、子网掩码和Gateway

2. 搭建网桥

2.1 目的

将Docker容器中的操作系统,暴露于实体网络中;实现Docker容器在多宿主间的信息交互。

2.2 删除docker自带的网桥docker0

Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。

由于docker0为Docker容器分配的是一个内部地址,所以需要将docker0删除。运行下述命令:

# 如果docker服务已经运行,需要停止服务
$ sudo service docker stop
 #停止服务后,运行
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0

2.3 建立新网桥

建立一个新网桥br0,与宿主的网卡绑定。宿主OS的差异使得新网桥br0建立的过程不同,一下分别就Ubuntu和CentOS为例进行介绍:

2.3.1 Ubuntu

仅需要修改/etc/network/interfaces一个文件。
/etc/network/interfaces原为:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.44
netmask 255.255.255.0
gateway 192.168.1.1

修改前,建议备份/etc/network/interfaces文件:
$ sudo cp interfaces interfaces.bak
建立一个新网桥,原文件改为:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports eth0
bridge_stp no
dns-nameserver 192.168.1.1

2.3.2 CentOS

在CentOS系统下,建立一个新网桥共需要操作两个文件:
/etc/sysconfig/network-scripts/ifcfg-eth0;
/etc/sysconfig/network-scripts/ifcfg-br0。

#修改ifcfg-eth0
#备份:
$ sudo cp ifcfg-eth0 ifcfg-eth0.bak
#将ifcfg-eth0的内容改为:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
TYPE=Ethernet
BRIDGE=br0

新建ifcfg-br0

$ touch ifcfg-br0

写入

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
USERCTL=no
IPADDR=192.168.1.3
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
PREFIX=24
DELAY=0
DNS1=192.168.1.1

2.3.3 重启宿主

修改网络参数,重启网络可能不会生效,建议重启宿主。
至此,新网桥搭建完成。

3 配置Docker后台进程参数

此部分工作主要是通过修改docker后台进程参数的方式,关闭网桥,为网络配置进行准备。

3.1 Docker配置文件位置

Docker的配置文件可以设置大部分的后台进程参数,在各个操作系统中的存放位置不一致:
在Ubuntu中的位置是:/etc/default/docker;
在CentOS中的位置是:/etc/sysconfig/docker

3.2 Ubuntu

修改/etc/default/docker文件:

$ echo 'DOCKER_OPTS="-b=none"' >> /etc/default/docker

3.3 CentOs

修改/etc/sysconfig/docker-network文件:

$ echo
'DOCKER_NETWORK_OPTIONS="-b=none"' > /etc/sysconfig/docker-network

3.4 重启Docker服务

#至此,完成对Docker后台进程参数的修改,重启Docker服务:
$ sudo service docker restart

4 测试demo

经由上文操作,宿主已搭建新的网桥br0,并完成了Docker后台进程参数的设置。此时,可以通过pipework命令配置Docker容器的IP地址、Netmask和Gateway信息。以下用一个示例说明:

# 使用的镜像为:someOS:v1.0
# 建立的Docker容器名称为test000

# 启动Docker容器,指定其名称为test000,hostname:test000
$ sudo docker run –itd -h test000 –-name test000 someOS:v1.0 /bin/bash

# 使用pipework配置容器的网络:
# IP: 192.168.1.44
# Netmask: 24
# Gateway: 192.168.1.1
$ pipework br0 -i eth0 test000 192.168.1.44/24@192.168.1.1
#连接容器测试
$ sudo docker exec -it test000 /bin/bash

如果容器test000无法解析域名,可以运行,关闭宿主机防火墙,这点很重要

$ echo "echo 'nameserver 192.168.1.1' > /etc/resolv.conf" >> ~/.bashrc

并将test000 commit为新的someOS镜像。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,468评论 0 120
  • 摘要: 本文讲的是Docker使用自定义网桥docker,并且自定义容器的ip地址。 Docker 服务默认会创建...
    think_lonely阅读 3,694评论 0 3
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,734评论 0 7
  • 文/唐僧先生 后街的沙漏书屋有一个时光,有着斑驳印迹的绿色,就立在门口。其实时光只是一个普通的信箱,一个普普通通存...
    乔诗伟阅读 1,732评论 9 31
  • 阳光把她的影子温柔地挂在墙角北国的寒冬即使是影子也温暖 她手扶案几,背对黑板,清了清嗓子抬头面对着一张张青涩的面庞...
    发表感想阅读 607评论 5 5