Docker网络详解

Docker网络详解

转载请注明来自:http://blog.csdn.net/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:xxinet 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=<bridgename>参数设置

# 先关闭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:xxinet 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:xxinet 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:/# envHOSTNAME=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 linknamespaces infrastructure

更多

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

posted on 2014-10-23 14:04 davice 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/davicelee/p/4045675.html

Docker网络详解相关推荐

  1. Docker网络详解——原理篇

    前言 当你开始大规模使用Docker时,你会发现需要了解很多关于网络的知识.Docker作为目前最火的轻量级容器技术,有很多令人称道的功能,如Docker的镜像管理.然而,Docker同样有着很多不完 ...

  2. 云原生时代必须具备的核心技能之Docker高级篇(Docker网络详解)

      前面给大家项目的介绍了Docker的基础内容 Docker基础篇 接下来给大家系统的介绍下Docker高级篇的内容:网络核心.Docker实战.DockerCompose.Harbor以及Swar ...

  3. Docker 网络详解

    前置网络知识 OSI七层网络模型 从下到上依次为:物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. 交换机:处在第二次,也就是数据链路层.作用:通过一个或者多个设备将不同子网连接在一起,相 ...

  4. 小白都能懂的 玩转docker系列之 Docker网络详解(超详细)

    首先移掉之前所有的容器: [root@xiaoxiao tomcat]# docker rm $(docker ps -aq) fcfddcab1789 [root@xiaoxiao tomcat]# ...

  5. Docker学习之路(三)Docker网络详解

    1. Docker的4种网络模式 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host ...

  6. Dockerfile详解、镜像发布、网络详解学习

    一.DockerFile 1.Docker介绍 Dockerfile是用来构建Docker镜像的文件是命令参数脚本.docker build命令用于从Dockerfile构建镜像.可以在docker ...

  7. ResNet网络详解与keras实现

    ResNet网络详解与keras实现 ResNet网络详解与keras实现 Resnet网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 梯度退化 Residual Lear ...

  8. GoogleNet网络详解与keras实现

    GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现 GoogleNet系列网络的概览 Pascal_VOC数据集 第一层目录 第二层目录 第三层目录 Incepti ...

  9. Linux系统下ifconfig和route配置网络详解

    Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...

  10. EfficientNetV2网络详解

    原论文名称:EfficientNetV2: Smaller Models and Faster Training 论文下载地址:https://arxiv.org/abs/2104.00298 原论文 ...

最新文章

  1. python中select用法_Python select及selectors模块概念用法详解
  2. linux系统中各个文件描述——陆续添加
  3. CF39C-Moon Craters【dp】
  4. 细数sass安装中遇到的坑
  5. 二进制、十进制、其他进制之间的转换
  6. mysql未找到bcrypt_使用mysql和bcryptjs时出现意外的标识符语法错误
  7. wow修改人物模型_抖音爆款心法:一个模型+五组案例
  8. JavaScript学习(六十七)—正则表达式学习总结
  9. python获取Linux信息
  10. 产品设计体会(6016)我是哪种用户(下)
  11. JDBC高级特性(一)结果集,批量更新
  12. python c/s模式下的内存监控模拟代码
  13. 前端js代码多文件混淆
  14. 人口增长模型——基于matlab语言
  15. 三年经验前端vue面试记录
  16. 6.MySQL中文排序(根据拼音排序)
  17. 【CSS3】一文搞懂盒子模型(知识点加案例)
  18. PPT中建立打开Onenote特定笔记本的超链接
  19. 深度神经网络的应用,深度神经网络应用
  20. 平台计算机网课视频无法加载,微信电脑版视频无法播放怎么办?微信电脑版视频播放不了的解决方法...

热门文章

  1. python解释器使用函数可以进入帮助系统_使用help()命令可以进入帮助系统。
  2. nginx tcp代理_小猿圈linux教程之Nginx负载均衡TCP/UDP流
  3. *第十五周*数据结构实践项目一【验证哈希表及其算法】
  4. 关于 exynos 4412 按键中断 异步通知
  5. AtCode Beginner Contest 096
  6. mysql数据库语法——(六)
  7. LeetCode - 不错的题目 - Longest Consecutive Sequence
  8. vim常用命令(二)
  9. 字符数组的定义与使用具体解析
  10. 选择条件WD_SELECT_OPTIONS_20