自己学Docker:13.Docker网络模式1--默认模式bridge模式
来源:互联网 发布:facebook 程序员薪资 编辑:程序博客网 时间:2024/05/29 17:16
当 Docker 启动时,会自动在主机上创建一个名为 docker0 虚拟网桥,这实际上就是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
系统会为这个docker0 分配一个私有网段的ip。如ip地址为172.17.0.1子网掩码为255.255.0.0。
当我们创建一个新的容器时,同时会创建了一对veth pair接口(即对等接口,当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。
过程分析
下面,来验证这个问题。
先创建两个容器:
sudo docker run -itd -P tomcatsudo docker run -itd -P tomcat
可以看到随机生成了两个名称为veth0e50c02和vethbb96690的interfaces。
查看主机网桥配置(brctl可以通过sudo apt install bridge-utils命令安装):
brctl show
两个容器的网络端口都挂载到了docker0上。
sudo docker ps
查看运行的docker容器。
sudo docker inspect 419988cde703sudo docker inspect 4cc78bf3d858
可以看到两个容器的网络信息,由于输出较多,这里只列出网络信息相关部分。
可以看出,这里两个容器的网关都是172.17.0.1,即docker在物理主机上创建的 docker0 虚拟网桥。ip地址分别为172.17.0.2和172.17.0.3。
进入到容器419988cde703中
这里写代码片
通过在容器中执行下面的命令,可以查看容器的网络信息。
ip addr show
可以看到,容器内有一个名为eth0的网络接口,ip为172.17.0.1。
查看容器转发信息
ip route show
可以看出来,在容器中输出的路由信息,由172.17.0.0/16可知子网掩码是255.255.0.0。由此可知,docker的docker0 虚拟网桥和容器里的eth0都是属于同一个子网的。
这些网络配置和使用docker inspect查询出来的也是一致的。
同时可以验证,容器(419988cde703)与容器(4cc78bf3d858)之间,主机与容器之间,容器与主机之间的网络都是联通的。
通过分析,上面的网络拓扑如下:
网络配置的过程
所以,Docker完成以上网络配置的过程大致是这样的:
- 在主机上创建一对虚拟网卡veth pair设备。
- Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0。另一端放在主机中,以veth*这样类似的名字命名,并将这个网络设备加入到docker0网桥中。
- 从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。
- 自己学Docker:13.Docker网络模式1--默认模式bridge模式
- 自己学Docker:4.开始了解Docker的工作模式
- Docker Container网络模式
- Docker网络模式
- Docker网络模式
- Docker网络模式
- docker网络模式
- docker网络模式
- 浅析Docker的网络模式
- docker 网络4种模式
- Docker的各个网络模式
- 忽视的Docker网络模式
- Docker四种网络模式
- 理解Docker的网络模式
- docker容器网络模式配置场景
- Docker之四种网络模式
- Docker的四种网络模式
- docker的五种网络模式总结
- 仿京东防抖动菜单
- Docker导入导出镜像
- 3_ImproperlyConfigured Requested setting DEFAULT_INDEX_TABLESPACE, but settings
- VS2010/MFC之按钮编程实例
- HTTP 和 HTTPS 的区别
- 自己学Docker:13.Docker网络模式1--默认模式bridge模式
- vue中的单选框选中值和最后传给后台值不一样,怎么获取
- iOS开发之MAC上SVN的使用
- 2_python连接MariaDB错误
- LeetCode试题之““给定一个正整数A,找到最小的正整数B,它的每一个数字的乘法等于A。””
- day09 数组形参、递归、全局/局部变量、static
- Activity的启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT
- leetCode---Candy
- 十分钟搞定上传本地项目到github