Docker-单宿主机下的网络模式
docker利用namespaces和cgroups实现了应用隔离和资源控制,那么网络层优势如何实现的呢?是直接使用宿主机的网卡设备,还是独立创造出自己的网络设备?以及容器如何与外界通信,下面我们通过简单的说明以及示例,讨论下单机模式下docker的网络模式。
docker单机模式下,主要有四种网络模式,可以在创建容器的时候通过--network参数指定,这四种网络模式如下:
1、--network=bridge:网桥模式,这是docker默认的网络模式,这种模式下,容器创建的时候,会生成一个独立的网卡设备eth0,但是这个网卡设备无法直接同外部通信,需要通过网络设备对veth,将容器内的eth0与docker0网桥连通,然后docker0与宿主机的eth0通过转发绑定端口映射,实现容器内部同外部的通信。
容器创建语法:docker run -d --name container_name --network bridge -p xxx:xxx image_name,由于是默认的,所以不指定--network参数默认就是这种模式
示意图如下:
2、--network=container:这种模式,docker在创建容器的时候会指定使用已经存在的容器的网卡设备作为新建容器的网卡设备。这中模式需要注意,由于是多个容器共用同一个eth0,所以需要注意端口冲突问题。
容器创建语法:docker run -d --name container_name --network container:已经存在的容器名称 -p xxx:xxx image_name
示意图如下:
3、--network=host:这种模式,创建容器的时候,不会新建网卡设备,而是使用宿主机的网卡设备eth0,在这种模式下,容器直接使用宿主机的IP,同样要注意端口的冲突问题。
容器创建语法:docker run -d --name container_name --network host -p xxx:xxx image_name
示意图如下:
4、--network=none:这种模式下,容器无法与外界通信,只能使用容器内部的回环(127.0.0.1)在容器内部通信。
容器创建语法:docker run -d --name container_name --network none image_name
示意图如下:
以上是单机模式下docker的网络模式,在实际使用中,为了高可用,都是在集群模式下,相关的网络模式将在后面继续讨论。不足之处,欢迎指正。
posted on 2018-11-20 23:45 funnyboy0128 阅读(2190) 评论(1) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南