docker容器网络

容器的四种网类 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配置文件

展开阅读全文

页面更新:2024-03-28

标签:容器   宿主   网段   网络   端口   网卡   路径   主机   模式   地址

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top