docker网络模式
-
1.Nat ( network address translation) 桥接bridge模式 docker容器的默认模式
网络资源隔离
无需手动配置
可以访问外网
外界无法直接访问容器ip
低性能
端口管理麻烦 (需要端口映射)
容器访问外界使用的是iptables的SNAT规则
外界访问容器使用的是DNAT规则
ifconfig 其中docker0地址是docker容器的网关
查看路由表 route -n
使用端口映射才会生iptables规则,查看iptables命令: iptables -t nat -L -n -
2.host
共享宿主机网络
网络环境无隔离
网络资源无法统计
端口不易管理
使用场景:就相当于在宿主机多跑了一个进程,比如跑了个apache nginx。
–net=host -
3.other container
容器A是nat模式,容器B使用容器A的网络模式,容器a和容器b的ip和mac地址完全一样。
与宿主机网络空间隔离
容器间共享网络空间
使用场景:两个容器网络访问特别频繁
–net=container:xxxxxx -
4.none
无网络配置,可自行配置
–net=none -
5.overlay.
多机网络
其他
-
基于容器A,启动container网络模式的容器B: docker run -it --name xxx --net=container:容器A 镜像名
-
次性删除多个容器:docker rm -f $(docker ps -aq) 其中-q是返回所有容器id
-
网络地址转换NAT 实现私有ip和公网ip的转换
-
防火墙iptables
-
ping和telnet
ping验证ip的可达性
telnet验证服务的可用性 -
两个容器之间的通信
通过docker0链接到一起,每个容器和docker0都由一对veth进行链接 -
容器和互联网的通信
容器通过veth对链接到docker0,docker0通过NAT进行网络地址转换,进而访问外网。