docker网络模式
docker有四种网络模式
- bridge模式
- host模式
- container模式
- none模式
bridge模式:
当docker进程启动时,会在主机上创建一个名为docker0的虚拟网卡(网桥),此主机上启动的Docker容器会连接到这个虚拟网卡上,从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth*设备,docker将veth*设备的一端连接新创建的容器,并命名为eth0(容器的网卡),另一端连接主机以veth开头的名字命名。该模式是docker默认的网络模
bridge模式容器的网络端口映射,容器中的环境与宿主机隔离,外部不能直接访问容器内的IP地址和端口。使用bridge模式宿主机的端口与容器内的端口映射来解决此问题
映射方式:一种是随机映射,一种是指定映射。
1、随机映射
参数:
-P 会将容器中暴露的端口随机映射到宿主机的某一个端口
docker run --name nginx01 --restart always -P -d nginx:1.21-alpine
1、指定映射
参数:
-p hostPort:containerPort
-p ip:hostPort:containerPort
-p 参数可以指定多次, 如: -p 10080:80 -p 10081:443…
docker run --name nginx02 --restart always -p 10080:80 -d nginx:1.21-alpine
二丶host模式
启动容器的时候使用host模式,那么容器不会虚拟出自己的网卡,配置自己的IP等,而是使用主机的IP和端口。容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
参数:
--net
docker run --name nginx01 --restart always --net=host -d nginx:1.21-alpine
docker run --name nginx02 --restart always --net=host -d nginx:1.21-alpine
优点:共享主机网卡,性能好低延时。
缺点:占用主机端口,同一端口的服务会出现端口冲突。
三丶container模式
container模式指定新创建的容器不会创建自己的网卡,配置自己的 IP,而是共享指定的容器的 IP、端口范围等。同样两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
docker run --name nginx01 --restart always -p 10080:80 -d nginx:1.21-alpine
docker run --name nginx02 --restart always --net=container:nginx01 -d nginx:1.21-alpine
四丶none模式
使用none模式,Docker容器不会进行任何网络配置。也就是说这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。
docker run --name nginx01 --net=none --privileged=true -d nginx:1.21-alpine
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理