docker通信

Docker容器访问

外部要访问Docker中的Container的话,其中外部可以理解为宿主机。外部要访问这些应用,可以通过-P或者-p 参数 来指定端口映射。
当使用-P标记时候,Docker会随机映射一个49000-49900的端口到内部容器开放的网络端口。


容器之间互相连接

在之前可以用--link参数来使容器互相连接,随着Docker网络的完善,我们可以通过Docker网络来连接多个容器。
对于目前的Docker而言,有4种基本模式,分别为bridge(网桥),host(主机),container(容器),none(未联网)。
目前而言还有一种实施跨主机联网的集群解决联网方案,overlay,overlay网络类型用于swarm mode。
---Bridge网桥模式:
如下图所示,一般而言,图中有一个提供给docker容器相互连接的网桥,docker0,其地址一般为172.17.42.1。当容器启动之后,Docker会生成一个veth的接口,这个接口本质相当于软件实现以太网的物理连接,Docker通过veth接口将容器的eth0连接到网桥。
默认情况下,所有容器都可以相互沟通,无论是否已经建立连接,或者已经导出端口。可以在Docker守护进程启动的时候加上--icc=false参数,这个参数将设置一个iptables规则,把容器之间的通信关闭。如果同时设置了--icc=false--iptables=true,那么只有已连接的容器才能通信,这也是通过iptables规则实现的。
网桥模式也是仅仅适用于开发模式,在生产模式下就不一定适用了。

---Host主机模式
如果容器以--net=host启动,那么容器就会共享主机的命名空间,容器会在公网上暴露出来。容器与主机共享一个ip地址,这也就意味着降低了底层开销,在速度上与常规主机一样快。

---Container容器模式
也就是使用另一个容器的命名空间,共享另一容器的ip地址。

---none未联网模式
也就把容器的网络完全关闭,无需连接任何容器,只需要将数据写入挂载在宿主机上的数据卷。

---overlay
overlay是Docker为了解决跨主机联网而实现的‘内附电池’方案。连接容器至overlay与网桥方式基本相同。同样需要建立起Linux网桥,并且需要一对veth接口用于容器之间的互相连接。


具体实施
首先创建一个新的docker网络

docker network create -d bridge my-net

-d参数指定Docker网络类型,有bridgeoverlay
然后连接容器步骤
运行一个容器并且连接到新的my-net网络上

docker run -it --rm --name busybox1 --network my-net busybox sh

打开新的终端,再运行一个容器并且加入到my-net网络

docker run -it --name busybox2 --network my-net busybox sh

再打开一个终端查看容器信息,之后通过ping来证明busybox1busybox2建立了互联关系
但是一般情况下,如果要使用多个容器相互连接的话,还是推荐使用Docker-compose,这样以来,只需要一个简单的模版,就可以完成复杂的工作。


配置docker0网桥
docker0在内核层联通了其他的物理或者虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker0默认制定了docker0接口的ip地址和子网掩码,让主机和容器之间可以通过网桥相互通信。由于目前docker网桥是linux网桥,用户可以使用brctl show来查看网桥和端口连接信息。
每次创建一个新的容器的时候,Docker从可用的地址段中选择一个空闲的ip地址分配给容器的eth0端口。使用本地主机上docker0接口的IP作为所有容器的默认网关。


创建点到点的连接
在默认情况下,Docker会将所有容器连接到由docker0提供的虚拟子网中。
用户有时候需要两个容器之间可以直接连接通信,而不通过主机网桥进行连接,此时就需要创建一对peer接口,分别放在两个容器中,配置成点到点链路类型即可。
首先要启动两个容器

$ docker run -i -t --rm --net=none base /bin/bash
root@1f1f4c1f931a:/#
$ docker run -i -t --rm --net=none base /bin/bash
root@12e343489d2f:/#

找到进程号,然后创建网络命名空间的跟踪文件

$ docker inspect -f '{{.State.Pid}}' 1f1f4c1f931a
2989
$ docker inspect -f '{{.State.Pid}}' 12e343489d2f
3004
$ sudo mkdir -p /var/run/netns
$ sudo ln -s /proc/2989/ns/net:/var/run/netns/2989
$ sudo ln -s /proc/3004/ns/net:/var/run/netns/3004

创建一对peer接口,配置路由

$ sudo ip link add A type veth peer name B
$ sudo ip link set A netns 2989
$ sudo ip netns exec 2989 ip addr add 10.1.1.1/32 dev A
$ sudo ip netns exec 2989 ip link set A up
$ sudo ip netns exec 2989 ip route add 10.1.1.2/32 dev A
$ sudo ip link set B netns 3004
$ sudo ip netns exec 3004 ip addr add 10.1.1.2/32 dev B
$ sudo ip netns exec 3004 ip link set B up
$ sudo ip netns exec 3004 ip route add 10.1.1.1/32 dev B

这样一来两个容器就可以相互ping通,并成功建立连接。点到点链路不需要子网和子网掩码。

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

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,499评论 0 120
  • 概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求。而容器的网络通信...
    糙老爷们儿吃什么樱桃阅读 3,623评论 1 5
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,748评论 0 7
  • 知道简书app也是很偶然的一个机会,每天打开今日头条看看新闻,了解生活的百态已然成为生活的一部分,那天打开头条一篇...
    蓝色相思雨阅读 240评论 0 0
  • 2015年是乙未羊年,恰好我的本命年,以前从来不迷信,也没有过穿红内衣,也许经历多了无奈的事情,就会有点宿命。 过...
    尹焕阅读 1,527评论 2 0