赞
踩
Docker 在启动时会创建一个虚拟网桥 docker0,默认地址为 172.17.0.1/16,容器启动后都会被桥接到 docker0 上,并自动分配到一个 IP 地址 (IP地址都会在172.17.0.1基础上递增 ==,第一个容器它获取到的IP为172.17.0.2)。
解释:veth设备是成双成对出现的,一端是容器内部命名为eth0,一端是加入到网桥并命名的veth8aa2220(通常命名为veth*),它们组成了一个数据传输通道,一端进一端出,veth设备连接了两个网络设备并实现了数据通信。
1.selinux和firewalld状态为disabled
2.各主机信息如下:
主机 | ip |
---|---|
server1(安装好docker) | 172.25.83.1 |
Docker在创建容器时有三种网络模式,bridge为默认不需要用–net去指定,其他三种模式需要在创建容器时使用–net去指定。
以下是docker网络初始化过程:
Bridge 桥接模式的实现步骤主要如下:
Bridge桥接模式的缺陷:
bridge 桥接模式下的 Docker Container 在使用时,并非为开发者包办了一切。
Host 网络模式:
host 模式是 bridge 桥接模式很好的补充。采用 host 模式的 Docker Container,可以直接使用宿主机的 IP 地址与外界进行通信,若宿主机的 eth0 是一个公有 IP,那么容器也拥有这个公有 IP。同时容器内服务的端口也可以使用宿主机的端口,无需额外进行 NAT 转换。
Host 网络模式的缺陷:
当然,有这样的方便,肯定会损失部分其他的特性。
Container 网络模式的实现步骤主要如下:
Docker Container 的 other container 网络模式,可以用来更好的服务于容器间的通信。
在这种模式下的 Docker Container 可以通过 localhost 来访问 namespace 下的其他容器,传输效率较高。虽然多个容器共享网络环境,但是多个容器形成的整体依然与宿主机以及其他容器形成网络隔离。另外,这种模式还节约了一定数量的网络资源。
Container网络模式的缺陷:
网络环境为 none,即不为 Docker Container 任何的网络环境。一旦 Docker Container 采用了none 网络模式,那么容器内部就只能使用 loopback 网络设备(即lo回环接口),不会再有其他的网络资源。可以说 none 模式为 Docker Container 做了极少的网络设定,但是俗话说得好“少即是多”,在没有网络配置的情况下,作为 Docker 开发者,才能在这基础做其他无限多可能的网络定制开发。这也恰巧体现了 Docker 设计理念的开放。
在 none 网络模式下分配固定 ip:
netns 是在 linux 中提供网络虚拟化的一个项目,使用 netns 网络空间虚拟化可以在本地虚拟化出多个网络环境,目前 netns 在 lxc 容器中被用来为容器提供网络。使用 netns 创建的网络空间独立于当前系统的网络空间,其中的网络设备及 iptables 规则等都是独立的,就好像进入了另外一个网络一样。
[root@server1 ~]# docker run -it --name vm1 ubuntu
[root@server1 ~]# docker run -it --name vm2 --net host ubuntu
用host网络模式启动的容器vm2,拥有与宿主机server1完全相同的结构。
- [root@server1 ~]# docker rm -f vm2 #删除之前用host模式开启的容器vm2
- [root@server1 ~]# netstat -antulpe | grep 80 #确保宿主机的80端口是没有被占用的。这样才能测试出,用host模式开启的容器和宿主机的结构是一模一样的。
- [root@server1 ~]# docker run -d --name vm2 --net host nginx #用nginx镜像运行容器vm2
[root@server1 ~]# docker run -it --name vm3 --net container:vm1 ubuntu
- [root@server1 ~]# brctl show #docker0的桥接接口只有一个;新创建的vm3容器,使用的是vm1的namespace
- bridge name bridge id STP enabled interfaces
- docker0 8000.02426b0d90ce no veth8aa2220
[root@server1 ~]# docker run -it --name vm4 --net none ubuntu
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。