docker网络模式及网络访问原理
docker的5种网络模型:
bridge网络 -net=bridge 默认网络,docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中
host网络 -net=host 容器不会获得一个独立的network namespace ,而是与宿主机共用一个,这意味着容器不会有自己的网卡信息,而是使用宿主机的,容器除了网络,其他都是隔离的
#使用场景,不想被占用IP,直接端口映射
none网络 -net=none 获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置
#容器的IP 需要手动配置,
container网络 -net=container:Name/ID 与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的
自定义网络 与默认的bridge原理一样,但自定义网络具备内部dns防线,可以通过容器名或者主机名容器之间网络通信。
#可以通过DNS解析
docker网络访问原理
如上图所示:
容器访问internet:
容器里的eth0,访问docker0 是通过veth(管道)与docker0相连,docker0通过snat 与宿主机的eth0相连,在到Internet
internet 访问容器
通过宿主机的eth0网卡,dnat路由到docker0,docker0根据veth(管道)分辨出要给哪个容器。