共计 1251 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章主要介绍 docker 中网络模式的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
当你安装完 Docker 时,它会自动创建三个网络。
docker network ls
结果应如下:
NETWORK ID NAME DRIVER SCOPE
594430d2d4bb bridge bridge local
d855b34c5d51 host host local
b1ecee29ed5e none null local
Docker 内置这三个网络,运行容器时,你可以使用该来指定容器应连接到哪些网络。
我们在使用 docker run 创建 Docker 容器时,可以用 –network 标志 选项指定容器的网络模式,Docker 有以下 4 种网络模式:
host 模式:使用 –net=host 指定。
none 模式:使用 –net=none 指定。
bridge 模式:使用 –net=bridge 指定,默认设置。
container 模式:使用 –net=container:NAME_or_ID 指定。
host
Docker 使用了 Linux 的 Namespaces 技术来进行资源隔离,如 PID Namespace 隔离进程,Mount Namespace 隔离文件系统,Network Namespace 隔离网络等。一个 Network Namespace 提供了一份独立的网络环境,包括网卡、路由、Iptable 规则等都与其他的 Network Namespace 隔离。
host 模式类似于 Vmware 的桥接模式,与宿主机在同一个网络中,但没有独立 IP 地址。一个 Docker 容器一般会分配一个独立的 Network Namespace。但如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。
如下图所示:容器与主机在相同的网络命名空间下面,使用相同的网络协议栈,容器可以直接使用主机的所有网络接口
案例验证
查看主机链路接口
ip a
我们右侧云环境主机的 IP 为 {host0.ip}/24 上用 host 模式启动 nginx 容器,监听它的 tcp80 端口。
使用 –net host 参数来指定网络模型使用 host 模式
docker run --name=nginx --net=host -p 80:80 -d nginx
查看容器链路接口,与主机一致
docker exec -it nginx cat /etc/hosts
这时外界要访问容器中的应用,则直接使用 {host0.ip}:80 即可,不用任何 NAT 转换,就像直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
curl {host0.ip}
以上是“docker 中网络模式的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!