设为首页 收藏本站
查看: 1544|回复: 1

[经验分享] Docker网络详解

[复制链接]

尚未签到

发表于 2015-4-18 05:49:17 | 显示全部楼层 |阅读模式
Docker网络详解
  转载请注明来自:http://blog.iyunv.com/wsscy2004

网络基础
  Docker使用linux桥接,在主机虚拟一个docker0网络接口,在主机中运行命令查看:

# List host bridges
$ sudo brctl showbridge      name    bridge id               STP enabled     interfacesdocker0             8000.000000000000       no
# Show docker0 IP address
$ sudo ifconfig docker0docker0   Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
  docker启动一个container时会会根据docker0的网段划分container的IP,docker0是每个container的网关。

自定义网络范围
  尽管docker在使用linux brigde会找最合适的。但是有时候我们还是需要自己规划。
使用-b=参数设置

# 先关闭docker
$ sudo service docker stop
# 关闭网桥docker0# 添加自己的网桥bridge0
$ sudo ifconfig docker0 down
$ sudo brctl addbr bridge0
$ sudo ifconfig bridge0 192.168.227.1 netmask 255.255.255.0
# 向Docker startup file中添加启动自定义网桥参数
$ echo "DOCKER_OPTS=\"-b=bridge0\"" >> /etc/default/docker
# 启动Docker
$ sudo service docker start
# 查看自定义网桥是否启动成功,ip等配置是否正确
$ sudo ifconfig bridge0
bridge0   Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.227.1  Bcast:192.168.227.255  Mask:255.255.255.0
# 启动container
docker run -i -t base /bin/bash
# 可以看到Container IP  在网段192.168.227/24内
root@261c272cd7d5:/# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.227.5  Bcast:192.168.227.255  Mask:255.255.255.0
# bridge0 IP as the default gateway# 查看路由信息
root@261c272cd7d5:/# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.227.1   0.0.0.0         UG    0      0        0 eth0
192.168.227.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
# hits CTRL+P then CTRL+Q to detach
# 查看网桥信息
$ sudo brctl show
bridge      name    bridge id               STP enabled     interfaces
bridge0             8000.fe7c2e0faebd       no              vethAQI2QT

container互通
  docker默认是允许container互通,通过-icc=false关闭互通。
一旦关闭了互通,只能通过-link name:alias命令连接指定container.
  
container互相隔离的情况下,假设我们有一个webapp container,一个redis contianer需要互通。
先启动redis container:

sudo docker run -d --name redis crosbymichael/redis

  再启动webapp并联通到redis

#将redis取别名为dbsudo docker run -t -i --link redis:db --name webapp ubuntu bash

  在webapp中可以看到db的网络信息:

$ root@4c01db0b339c:/# env
HOSTNAME=4c01db0b339c
DB_NAME=/webapp/db
TERM=xterm
DB_PORT=tcp://172.17.0.8:6379
DB_PORT_6379_TCP=tcp://172.17.0.8:6379
DB_PORT_6379_TCP_PROTO=tcp
DB_PORT_6379_TCP_ADDR=172.17.0.8
DB_PORT_6379_TCP_PORT=6379
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
HOME=/
container=lxc
_=/usr/bin/env
root@4c01db0b339c:/#
  0.11版本以后,-- link redis:db的别名,会在/etc/hosts中生成对应的ip映射:

root@6541a75d44a0:/# cat /etc/hosts172.17.0.3  6541a75d44a0172.17.0.2  db

什么是vethxxxx

# 查看网桥信息
$ sudo brctl show
bridge      name    bridge id               STP enabled     interfaces
docker0             8000.fe7c2e0faebd       no              vethAQI2QT

  vethxxx是主机与container内部eth0相连的管道。详见ip link和namespaces infrastructure

更多
  pipework可以创建各种复杂的containers互通的场景。详见here

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58172-1-1.html 上篇帖子: docker on Mac 下篇帖子: Docker运行 Mono
累计签到:102 天
连续签到:1 天
发表于 2015-6-25 16:25:04 | 显示全部楼层
比较详细,不错!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表