容器的四种网类 bridge: -net=bridge 桥接式网路:这里的桥接网络不是物理桥接,指的是nat桥接,bridge模式是docker的默认网络模式地址是172.17.0*网段,不写–net参数,就是bridge模式。
Host: -net=host 主机式网络:容器与宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
container: -net=container:NAME_or_ID 联盟式网络: 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围。
none: -net=none 封闭式网络: Docker容器拥有自己的Network Namespace,这个Docker容器没有网卡(只有 lo 回环网络)、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
容器默认的桥接网络是172.17.0.1,每启动一个容器将默认分配一个172.17.0网段的地址。
安装bridge-utils工具查看网络交接情况
[root@localhost ~]# yum install bridge-utils
[root@localhost ~]# brctl show 显示桥接了三块网卡(已启动三个容器)
[root@localhost ~]# docker inspect bridge (可查看默认bridge网络)
[root@localhost ~]# docker container inspect tt 查看容器网络
[root@localhost ~]# docker run –name by -it –network bridge busybox:latest 指定bridge网络模式。
[root@localhost ~]# docker run –name by -it –network none busybox:latest 指定none网络模式,这个Docker容器没有网卡称为封闭式容器。
[root@localhost ~]# docker run –name by -it –network bridge -h jchj –dns 8.8.8.8 busybox:latest
启动容器时指定其容器名称、网络类型、主机名、DNS地址。
[root@localhost ~]# docker run –name by -it –network bridge -h jchj –dns 8.8.8.8 –add-host www.jchj.shop:10.0.0.101 busybox:latest 指定IP解析域名。
[root@localhost ~]# docker run –name jj -itd -p 32761:80 jchj/httpd:v0.2 把jj容器中需要对外暴露的80端口映射至宿主机的32761端口上,因此可以直接通过访问宿主机curl 10.0.0.101:32761来访问容器内的http服务。
主机是网络:容器与宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
[root@localhost ~]# docker run –name b2 –network host -it busybox
(宿主机的网络地址也是10.0.0.80)
桥接式网路:这里的桥接网络不是物理桥接,指的是nat桥接,bridge模式是docker的默认网络模式地址是172.17.0*网段
[root@localhost ~]# docker run –name b2 –network bridge -it busybox
(这里–network 指不指明bridge都一样,容器默认即是net桥接网络)
封闭式网络: Docker容器拥有自己的Network Namespace,这个Docker容器没有网卡(只有 lo 回环网络)
[root@localhost ~]# docker run –name b2 –network none -it busybox
(IP、路由等信息。后面我们可以自己为Docker容器添加网卡、配置IP等)
联盟式容器:这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。相当于一个主机上跑多个进程如:一个主机跑有nginx、mysql或是php等程序。
运行一个交互式容器:
[root@localhost ~]# docker run –name b1 -it busybox
[root@localhost ~]# docker run –name b2 –network container:b1 -it busybox
自定义docker0桥的网络属性信息(也就是改变默认docker0的桥接的172.17.0.*网络地址段)
更改docker0桥的网络属性信息:/etc/docker/daemon.json
“bip”:”192.168.100.1/24″, bip即bridge ip 之意,用于指定docker0桥自身的IP地址,其它选项可通过此地址计算得出
“fixed-cidr”:”10.20.0.0/16″, 指定默认IPV4地址
“fixed-cidr-v6″:”2001:d8::/64”, 指定默认IPV6地址
“mtu”:1500,
“default-gateway”:”10.20.1.1″, 指定默认IPV4地址网关
“default-gateway-v6″:”2001:db8:abcd::89”, 指定默认IPV6地址网关
“dns”:{“114.114.114.114″,”10.20.1.3”}, 指定DNS地址
此处我们一般只指定bip地址即可.
[root@localhost ~]# vim /etc/docker/daemon.json
(在容器极速器地址后面加上”bip”:”192.168.100.1/24″保存退出重启容器)
[root@localhost ~]# systemctl restart docker 重启容器
[root@localhost ~]# docker run –name b2 –network bridge -it busybox
docker守护进程的c/s,其默认仅监听Unix S0cket格式的地址,/var/run/docker.sock;如果使用TCP套接字,/etc/docker/daemon.json
“hosts”:[“tcp://0.0.0.0:2375″,”unix:///var/run/docker.sock”]
(即可通过地址访问,”tcp://0.0.0.0:2375″默认监听本机所有地址的2375端口,”unix:///var/run/docker.sock”unix协议路径)
也可向docker直接传递”-H|–host”选项
[root@localhost ~]# vim /etc/docker/daemon.json
[root@localhost ~]# systemctl restart docker 重启容器
[root@localhost ~]# ss -tnl
[root@js ~]# docker -H 10.0.0.80:2375 images 连接远程主机的docker
[root@js ~]# docker info 在docker的信息中可以看到还可以创建ipvlan、manvlan、overlay的桥。
再创建一个bridge的桥使用不同的IP地址段,如:docker network create -d bridge –subnet “172.26.0.0/16” –gateway “172.26.0.1” mybr0
[root@localhost ~]# docker network create -d bridge –subnet “172.26.0.0/16” –gateway “172.26.0.1” mybr0
两个不同网络地址段的bridge桥都是net桥接到本机的物理接口的,应该是可以相互通信的,如果不行就开启系统的核心转发功能。
CentOS7 开启内核转发
# vim /etc/sysctl.conf
#添加以下参数
net.ipv4.ip_forward=1 # 1表示开启 0表示关闭
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0 #控制系统是否开启对数据包源地址的校验
# rp_filter参数有三个值,0、1、2,具体含义: 0:不开启源地址校验。 1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。 2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包。
sysctl -p ##让内核参数立即生效,加载sysctl配置文件
If some one wants expert view on the topic of blogging and site-building then i recommend him/her to
pay a visit this website, Keep up the good work.
Attractive section of content. I just stumbled upon your site and in accession capital
to assert that I acquire actually enjoyed account your blog posts.
Anyway I will be subscribing to your feeds and
even I achievement you access consistently rapidly.