Docker网络

  • 1. Docker 网络模式
  • 2. 自定义网络模式
  • 3. bridge模式
    • 3.1 bridge模式的拓扑
    • 3.2 网络模式详解

1. Docker 网络模式

Docker有bridge、container、host、none 4种网络模式,我们在使用docker run创建Docker容器时,可以用–net选项指定容器的网络模式,若没有指定,默认bridge,如下表

网络模式 指定 说明
bridge --net=bridge 默认模式,此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信
container --net=container:容器名或ID 创建的容器不会创建自己的网卡、配置自己的IP,而是和一个指定的容器共享IP、端口范围
host --net=host 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口
none --net=none 该模式关闭了容器的网络功能

2. 自定义网络模式

语法

$ docker network create --driver bridge new_bridge

3. bridge模式

3.1 bridge模式的拓扑

当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。接下来就要为容器分配IP了,Docker会从RFC1918所定义的私有IP网段中,选择一个和宿主机不同的IP地址和子网分配给docker0,连接到docker0的容器就从这个子网中选择一个未占用的IP使用。如一般Docker会使用172.17.0.0/16这个网段,并将172.17.0.1/16分配给docker0网桥(在主机上使用ifconfig命令是可以看到docker0的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用)。单机环境下的网络拓扑如下,主机地址为10.10.0.186/24。

3.2 网络模式详解

  1. 在主机上创建一对虚拟网卡veth pair设备。veth设备总是成对出现的,它们组成了一个数据的通道,数据从一个设备进入,就会从另一个设备出来。因此,veth设备常用来连接两个网络设备。

  2. Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0。另一端放在主机中,以veth65f9这样类似的名字命名,并将这个网络设备加入到docker0网桥中,可以通过brctl show命令查看。

$ brctl show
bridge name bridge id       STP enabled interfaces
docker0     8000.024257a5b606   no

若出现

-bash: brctl: command not found

请执行如下命令安装

$ yum install bridge-utils
  1. 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。
# 运行容器
$ docker run --name=nginx_bridge --net=bridge -p 80:80 -d nginx  # 查看容器
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                NAMES
2239247b37d0        nginx               "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp   nginx_bridge# 查看容器网络
$ docker inspect 2239247b37d0"Networks": {"bridge": {"IPAMConfig": null,"Links": null,"Aliases": null,"NetworkID": "1e6a2db2eb6d44ab97e384b7e84fe91a4215c95dd1b3afd7d485d3d04e144b0c","EndpointID": "eea4399f79b7dc40c57bb897eb17441322c8faedf0e3188bffc530f32bcb4bf4","Gateway": "172.17.0.1","IPAddress": "172.17.0.2","IPPrefixLen": 16,"IPv6Gateway": "","GlobalIPv6Address": "","GlobalIPv6PrefixLen": 0,"MacAddress": "02:42:ac:11:00:02","DriverOpts": null}}$ docker network inspect bridge
[{"Name": "bridge","Id": "1e6a2db2eb6d44ab97e384b7e84fe91a4215c95dd1b3afd7d485d3d04e144b0c","Created": "2019-01-07T03:18:11.911442255-05:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16","Gateway": "172.17.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {"2239247b37d0adacbcb360bd249bdb123b1c7baa5371b57b348046ccbe418ca0": {"Name": "nginx_bridge","EndpointID": "eea4399f79b7dc40c57bb897eb17441322c8faedf0e3188bffc530f32bcb4bf4","MacAddress": "02:42:ac:11:00:02","IPv4Address": "172.17.0.2/16","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": {}}
]

05-Docker网络相关推荐

  1. 理解Docker(5):Docker 网络

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  2. 深入学习Docker网络(看这篇就完全够了)

    1.什么是Docker网络 没有开启Docker网络时的网络状态: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state ...

  3. 一次Flannel和Docker网络不通定位问题

    一次Flannel和Docker网络不通定位问题  查看路由表的配置 路由表情况 [root@k8s-master ~]# route -n Kernel IP routing table Desti ...

  4. Docker网络解决方案 - Weave部署记录

    前面说到了Flannel的部署,今天这里说下Docker跨主机容器间网络通信的另一个工具Weave的使用.当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的 ...

  5. Dockerfile和Docker网络

    目录 Dockerfile 构建步骤: 基础知识: 指令 案例 制作Tomcat镜像 发布镜像 阿里云容器镜像服务 Docker网络 容器互联 自定义网络: 网络联通 实战:部署Redis集群 Spr ...

  6. 02@Docker网络介绍及网络模式的使用

    文章目录 Docker网络的介绍 一.Docker网络原理 1.docker网络介绍 2.Docker网络原理 二.docker网络基础 [网络命名空间] 1.Veth 设备对 2.网络原理实验的实现 ...

  7. Docker网络解决方案-Flannel部署记录

    Docker跨主机容器间网络通信实现的工具有Pipework.Flannel.Weave.Open vSwitch(虚拟交换机).Calico实现跨主机容器间的通信.其中Pipework.Weave. ...

  8. 谈谈 Docker 网络

    基于近期学习的 Docker 内容,整理与 Docker 网络相关的知识. 实验环境:Centos 7.4 Docker 版本如下: Client:Version: 18.03.1-ceAPI ver ...

  9. Docker 网络不通的解决方法

    Docker 网络不通的解决方法 参考文章: (1)Docker 网络不通的解决方法 (2)https://www.cnblogs.com/jiu0821/p/10603793.html 备忘一下.

  10. docker网络问题解决办法“大全”:关于宿主机访问不了docker容器中web服务,或者容器内访问不了外网的问题的解决办法

    docker网络问题解决办法"大全":关于宿主机访问不了docker容器中web服务,或者容器内访问不了外网的问题的解决办法 参考文章: (1)docker网络问题解决办法&quo ...

最新文章

  1. 初步建立了完整AI产业链,我国AI域累计融资世界第一
  2. vue中将md转成html,Vue/Vue中Html和Markdown互相转换/README.md · 倚栏听风/LearningNotes - Gitee.com...
  3. 8分钟答辩稿_5分钟学会8个答辩小套路,教资面试没在怕的啦!
  4. 2017.10.25水题大作战题解
  5. MySQL回闪_MySQL进行BINLOG回闪
  6. Tomcat启动过程源码分析四
  7. 容器编排技术 -- Kubernetes 为 Namespace 配置最小和最大 CPU 限制
  8. springboot面试
  9. go Mutex (互斥锁)和RWMutex(读写锁)
  10. 对waitpid 的学习
  11. Prototype实例代码推荐
  12. 我看TechEd 2012之App时代降临
  13. 竖屏java转横屏_Android屏幕旋转之横屏竖屏切换的实现
  14. Spring Boot(四)—— Spring MVC自动配置
  15. windows 内网域电脑无法ntp时间同步
  16. 488. 祖玛游戏【我亦无他唯手熟尔】
  17. regedit参数+批处理修改IE标题
  18. Dell电脑插入耳机不能识别
  19. html中图片连续滚动代码,[转载]网页设计中的图片连续滚动效果——代码
  20. ftp上传老是失败 [L] TYPE A [L] 200 Type set to A. [L] MODE Z [L] 200 MODE Z ok. [L] PASV [L] 550 Pa

热门文章

  1. 最新版云喵圈子全开源系统源码 兴趣社区交友圈子系统小程序源码 | THINKPHP框架后台
  2. Linux学习基础之Linux服务管理
  3. 法国最新光伏竞价:6.59美分/千瓦时低于风电
  4. 很多人已身处物联网公司,却对企业转型浑然不知
  5. 基于JavaSwing开发进销存管理系统+设计报告
  6. 开发第一个Phaser3游戏
  7. 这几个程序员都在用的兼职接私活平台,既靠谱又高效,让你收入飙涨
  8. 云汇优想抖音带货陷阱是真的吗?
  9. 设计模式--单例模式(一)懒汉式和饿汉式
  10. 家电与消费电子年度至高荣誉,2019艾普兰奖揭晓