Docker学习笔记(四)
Docker网络相关
none网络,即没有网卡,用于不需要联网交互的容器运行,运行参数 --network=none
host网络,直接使用host的网络,端口。可以实现高效的网络传输,但是不够灵活,而且需要注意端口冲突,运行参数 --network=host
bridge网络,使用Docker默认的网桥docker0,不指定--network
自定义网络,多种网络,现在仅了解自定义bridge网络,
网络命令:
网络查看命令 docker network ls
bridge网络配置查看命令 docker network inspect (bridge/my_net)
网络结构查看命令 brctl show
bridge网络创建命令 docker network create --driver bridge my_net ,可以指定IP网段,--subnet 172.22.16.0/24 --gateway 172.22.16.1
使用自定义的bridge网络并且指定网段后,运行容器在该网络时可以指定IP ,参数--ip 172.22.16.8
如何使不同网段之间的容器互相通信?
1、需要对容器添加缺少的网卡,例如:docker network connect 网络名 容器ID。
2、docker自带DNS服务解决,应用场景,部署时无法确定IP,所以在容器运行时添加参数 --name重命名,这样既可以不需要指定IP就能完成通信,但是必须在用户自定义的网络中使用。
3、通过--network=container:容器名 ,将新建容器joined到之前容器的网络栈中,这样就可以实现网络共享了。非常适合不同容器高效通信,或者希望监控其他容器的网络情况。
外网通信
1、容器如何访问外部网络?
默认容器可以访问外网通信,查看iptables -t nat -S,可知docker完成了网络地址的转换,将网桥docker0的外出包转换原地址为host地址后发出。
ip r查看host的路由表情况。
2、外部网络如何访问容器?
端口映射,docker 可以将容器提供服务的端口映射到host的某个端口,这样外网就可以访问容器了,使用参数-p进行端口映射。
使用端口映射时,host会启动docker-proxy进程来处理访问流量的转发。

浙公网安备 33010602011771号