docker 0网卡可以理解为一个交换机,负责交互容器之间的信息交互,有几个容器,就会出现几个veth。
容器访问外部网络iptables -t nat -A POSTROUTING -s 172.17.0.0/16 -o docker0 -j MASQUERADE
外部网
络访问容器
docker run -d -p 80:80 apacheiptables -t nat -A POSTROUTING -m addrtype --dst-type LOCAL -j DOCKERiptables -t nat -A DOCKER ! -i docker0 -p tcp --dport 80 -j DNAT --to-destination 172.17.0.2:80
Docker网络模式修改
-b,--bridge=“ ”,指定Docker使用的网桥设备,默认情况下Docker会自动创建和使用docker0网桥设备,通过此参数可以使用已经存在的设备
--bip指定Docker0的IP和掩码,使用标准额CIDR形式,如10.10.10.10/24
--dns配置容器的DNS,在启动Docker进程时添加,所有容器全部生效
Docker 容器网络修改--dns用于指定启动的容器的DNS
--net用于指定容器的网络通讯方式,有以下四个值
bridge:网桥模式,Docker默认启动后会创建一个Docker0网桥,默认创建的容器也是添加到这个网桥中,IP地址段是172.17.0.1/16
none:获取独立的network namespace,但是不为容器进行任何网络配置
container:使用其他容器的网络栈,Docker容器会加入其他容器的network namespace
host:表示容器使用Host的网络,没有自己独立的网络栈,而是与宿主机共用一个,容器可以完全访问Host的网络,不安全
自定义:自定义网桥,默认与bridge网络一样
暴露端口p/P选项的使用格式
p :<ContainerPort): 将制定的容器端口映射至主机所有地址的一个动态端口 p <HostPort>:<ContainerPort>: 映射至指定的主机端口 p ::<ContainerPort>: 映射至指定的主机的IP的动态端口 p :<HostPort>: <ContainerPort>:映射至指定的主机IP的主机端口 P (大) :暴露所需要的所有端口
docker port ContainerName 可以查看容器当前的映射关系
自定义 Docker0 网桥的网络地址修改/etc/docker/daemon.json文件
{“bip”: "192.168.1.5/24", "fixed-cidr": "10.20.0.0/16", "fixed-cidr-v6" :“2001 :db8: :/64, "mtu": "1500" , "default-gateway": "10. 20.1.1" , "default- gateway v6 : "2001 :db8:aabb: :89", "dns": ["10. 20.1.2","10. 20.1.3"]}
不同网络空间进行隔离
docker network create -d bridge -- -subnet" 172. 26. 0. 0/16" - -gateway”172. 26. 0.1" my-bridge-networkdocker run -d-- network my- -bridge- -network - -- -name test1 hub. c. 163. com/ public/ centos:6.7-toolsdocker run -d-- name test2 hub. c. 163. com/pub1ic/centos:6. 7-tools
linux
桥接器进行主机间通讯
[root@localhost network- scripts]# vi ifcfg -eth0DEVICE=eth0HWADDR=00:OC: 29:06:A2:35TYPE=EthernetUUID=34b706cc- aa46-4be3-91fc-d1f48c301f23 .0NBOOT=yesBRIDGE=br0NM_ _CONTROLLED=yesBOOTPROTO=static[root@localhost network- scripts]# vi ifcfg -br0//改成这样DEVICE=br0TYPE= :BridgeONB0OT=yesB0OTPROTO=staticIPADDR= 192. 168. 216.131NETMASK- =255.255. 255.0GATEWAY=192.168. 216. 2DNS=8.8.8.8
[root@localhost network- -scripts]# yum install -y git[root@localhost network -scripts]# git clone https ://gi thub. com/ jpetazzo/ pipework[root@localhost network- -scripts]# cp pipework/pipework /usr/ 1ocal/bin/[root@localhost network- scripts]# docker run -itd -- net=none -- name=ff centos- -6- -x86 bash[root@localhost network -scripts]# pipework br0 fl 192. 168. 216. 135/24
备注:此文章为本人学习笔记,各位大佬不喜勿喷,谢谢!
§ §