docker安装时会创建一个名为 docker0 的linuxbridge。如果不指定 --network ,创建的容器默认都会挂在docker0上
 
root@docker-lab:~# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
b41bf72cd691        bridge              bridge              local
e5cb8d603efd        host                host                local
f9dc6032baba        none                null                local
 
root@docker-lab:~# brctl show
bridge name    bridge id        STP enabled    interfaces
docker0        8000.02420e6cb404    no        
 
root@docker-lab:~# docker run -it -d busybox sh
ef89b9d9c9f300d1369b9178096b700fc48313e7b4696c8fd8c898aff4ee1210
 
root@docker-lab:~# brctl show    #    容器启动后可以看到网桥上多出来了一个接口
bridge name    bridge id        STP enabled    interfaces
docker0        8000.02420e6cb404    no        veth3936bf3
 
root@docker-lab:~# ip address    #    接口信息如下,if5490
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
 
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 
3: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
 
5491: veth3936bf3@if5490: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
    link/ether 1e:af:87:1d:eb:7c brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::1caf:87ff:fe1d:eb7c/64 scope link
       valid_lft forever preferred_lft forever
 
root@docker-lab:~# docker exec -it ef89b9d9c sh
/ # ip address    #    在容器里面查看网卡信息,if5491
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
5490: eth0@if5491: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
 
root@docker-lab:~# docker network inspect bridge    #    查看网桥详细信息
[
    {
        "Name": "bridge",
        "Id": "b41bf72cd69194546142efd9b9512c4d7b7fe1b66b3ccb7be982f50ad9881010",
        "Created": "2018-12-25T01:30:26.203579986+08:00",
        "Scope": "local",
        "Driver": "bridge",    #    网桥类型
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16", #    自动分配ip段
                    "Gateway": "172.17.0.1"    #    网关地址
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "ef89b9d9c9f300d1369b9178096b700fc48313e7b4696c8fd8c898aff4ee1210": {    #    容器id
                "Name": "nifty_allen",    #    容器name
                "EndpointID": "0ff4b8d824df3103390f19fe2275af23dd06f22d8be8d3782060a5ab20fa0519",
                "MacAddress": "02:42:ac:11:00:02",    #    容器mac
                "IPv4Address": "172.17.0.2/16",       #    容器ip
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
 
root@docker-lab:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ef89b9d9c9f3        busybox             "sh"                9 minutes ago       Up 9 minutes                            nifty_allen
 
 
 
 
docker host -- veth3936bf3@if5490
 
container --  eth0@if5491
 
if5490 和 if5491 是一对 veth pair,一头在容器里面,一头在docker host上
 
veth pair技术,在宿主机上创建两个虚拟网络接口 eth0和eth1,veth pair技术的特使是保证无论哪个veth接受到的网络报文,都会无条件的传输给另一方,可以理解成一根管子的两端
 
关于docker bridge的详细介绍,请参考https://blog.csdn.net/mergerly/article/details/79819318
 
 

032、学容器必须懂bridge网络(2019-02-19 周二)的更多相关文章

  1. 第 5 章 网络 - 032 - 学容器必须懂 bridge 网络

    bridge 网络 Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果不指定--network,创建的容器默认都会挂到 docker0 上. 创建一个容器 一个 ...

  2. 学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)

    上一节我们讨论了 none 和 host 类型的容器网络,本节学习应用最广泛也是默认的 bridge 网络. Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果 ...

  3. 30-学容器必须懂 bridge 网络

    Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果不指定--network,创建的容器默认都会挂到 docker0 上. apt-get install bri ...

  4. docker容器中用户自定bridge网络与默认bridge网络之间的区别

    转载 https://blog.csdn.net/dkfajsldfsdfsd/article/details/79959534

  5. 2019.02.19 bzoj2655: calc(生成函数+拉格朗日插值)

    传送门 题意简述:问有多少数列满足如下条件: 所有数在[1,A][1,A][1,A]之间. 没有相同的数 数列长度为nnn 一个数列的贡献是所有数之积,问所有满足条件的数列的贡献之和. A≤1e9,n ...

  6. 容器技术之Docker网络

    上一篇博客我们主要聊了下docker镜像相关的说明以及怎样基于现有镜像制作镜像.分发镜像到docker仓库中的相关测试:回顾请参考https://www.cnblogs.com/qiuhom-1874 ...

  7. Docker容器基础入门认知-网络篇

    这篇文章中,会从 docker 中的单机中的 netns 到 veth,再到单机多个容器之间的 bridge 网络交互,最后到跨主机容器之间的 nat 和 vxlan 通信过程,让大家对 docker ...

  8. 使用pipework将Docker容器配置到本地网络环境中

    使用pipework将Docker容器配置到本地网络环境中 需求 在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主 ...

  9. 【05】循序渐进学 docker:系统资源和网络

    写在前面的话 在上一篇学习 Dockerfile 的时候其实还有几个相当重要得关键中没有谈到,但没关系,在后面的内容会单独提出来一个一个的学习.这里就先谈谈关于资源的控制个容器的网络~ 资源限制 其实 ...

随机推荐

  1. Dockerfile基础

    Dockerfile基础Dockerfile分四部分组成: 基础镜像.维护者信息.镜像操作指令.启动时命令ps: 我的本地镜像已经有centos,若没有请使用docker pull centos 入门 ...

  2. 【BZOJ2817】[ZJOI2012]波浪(动态规划)

    [BZOJ2817][ZJOI2012]波浪(动态规划) 题面 BZOJ 洛谷 题解 首先这个差值最大也就是\(n^2\)级别的. 那么这样子就可以压进状态啦. 我们把这个操作看成一个个加数的操作,按 ...

  3. 【CF1097F】Alex and a TV Show(bitset)

    [CF1097F]Alex and a TV Show(bitset) 题面 洛谷 CF 题解 首先模\(2\)意义下用\(bitset\)很明显了. 那么问题在于怎么处理那个\(gcd\)操作. 然 ...

  4. 如何在代码中减少if else语句的使用

    前言 代码中嵌套的if/else结构往往导致代码不美观,也不易于理解.面向过程的开发中代码有大量的if else,在java中可以用一些设计模式替换掉这些逻辑,那么在js中是否也有类似的方法用来尽可能 ...

  5. 单片机的编程语言和开发环境 LET′S TRY“嵌入式编程”: 3 of 6

    单片机的编程语言和开发环境 LET′S TRY“嵌入式编程”: 3 of 6 本连载讲解作为嵌入式系统开发技术人员所必需具备的基础知识.这些基础知识是硬件和软件技术人员都应该掌握的共通技术知识. 在“ ...

  6. linux环境sed命令实例学习

    命令简介: sed(Stream Editor)被称作流编辑器.linux命令环境的“三剑客”(grep,sed,awk)之一,功能强大,可以根据命令来处理数据流中的数据,命令可以在命令行中,也可以出 ...

  7. 利用sqlalchemy读取数据库 和pandas的Dataframe对象 互相生成

    #导入pandas import pandas as pd import numpy as np #导入SqlAlchemy from sqlalchemy import create_engine ...

  8. 记录EXCEL格式和TXT文本格式之间的互转

    EXCEL格式转变成TXT文本格式 1.打开execl文档,点击文件另存为 2.选择txt保存 3.重命名文档,打开该txt文档 4.按Ctrl+H,将文档中空格转换成其他分割符,单击确定 TXT格式 ...

  9. ElasticSearch6.5.0 【Rejecting mapping update to [posts] as the final mapping would have more than 1 type】

    今天想在一个Index上增加一个type,结果报错 java.lang.IllegalArgumentException: Rejecting mapping update to [posts] as ...

  10. AndroidS软件代码提示

    在用Eclipse时候,你可以进行设置,设置成不管你输入任何字母,都能进行代码的提示,在Android Studio中也可以 设置,而且比Eclipse设置来的简单.当然如果你觉得代码自动提示会降低你 ...