Docker实战系列【网络详解】

举报
子都爱学习 发表于 2021/12/22 23:14:55 2021/12/22
【摘要】 Docker 网络架构源自一种叫作容器网络模型(CNM)的方案,该方案是开源的并且支持插接式连接。容器服务能够正常被外面的主机正常访问 ,Docker网络实现的方式有两种:端口映射和网络模式 端口映射将容器内的服务端口和主机端口关联在一起,通过"宿主机ip:port",达到访问容器服务效果docker -P/p [镜像名称]参数说明:-P   容器应用port随机映射到宿主机的port上自动...

Docker 网络架构源自一种叫作容器网络模型(CNM)的方案,该方案是开源的并且支持插接式连接。容器服务能够正常被外面的主机正常访问 ,Docker网络实现的方式有两种:端口映射和网络模式 


端口映射
将容器内的服务端口和主机端口关联在一起,通过"宿主机ip:port",达到访问容器服务效果
docker -P/p [镜像名称]
参数说明:
-P   
容器应用port随机映射到宿主机的port上
自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中自动随机选择
[生产场景中一般不使用,可能会冲突]
-p
指定端口 宿主机ip:宿主机port:容器端口
ip不写表示0.0.0.0,宿主机port不写表示随机端口,容器port必须指定
可以同时对多个端口进行映射绑定

# -P示例
docker -d -P nginx 

1.jpg
2.jpg

# -p示例
docker -d -p 10.211.55.3:777

1.jpg

2.jpg



网络模式
docker内部的网络通信方式
默认:
bridge - 网络地址转换
host - 容器使用宿主机的网络信息, 注意:因为使用宿主机的信息,那么一定要保证,宿主机的现有端口与容器默认暴露的端口没有冲突
none - 容器没有任何网络信息

网络命令
查看主机网络类型
docker network ls 
docker network inspect

创建网络
docker network create  --driver [网络类型] [网络名称]
删除网络
docker network rm [网络名]

使用网络
docker run -net=[网络名称] -itd --name [容器名称] [镜像名称]


断开
docker network disconnect [网络名] [容器名]
连接
docker network connect [网络名] [容器名]


【小结】

bridge
容器连接到虚拟网桥,借助于宿主机的nat模式来上网,默认模式,自由方便,不可控


docker容器默认采用的网络模型是bridge
同一宿主机上的默认网络模型的容器,都可以自由通信
不同宿主机上的容器由于网络地址相同,不能通行
可以通过 -icc 使同一宿主机下的容器间不能自由通信
 

也可以通过容器间互联的方式进行通信


host
借助于宿主机的i p地址来进行通信,性能好,多主机容器间无网络隔离,受宿主机端口限制
192.168.8.12主机开启haproxy和tomcat-appl 容器
docker run -d --network host ubuntu-haproxy:2 .4.2
docker run -d --network host tomcat-web: app2
netstat -tnulp| grep 80

192.168.8.13主机开启tomcat-app2 容器
docker run -d --network host tomcat-web: app1
netstat -tnulp| grep 8080

由于host模式直接将容器端口关联到宿主机上了,所以无法进行端口映射了
即时容器能够启动成功,也无法实现端口映射。

none
容器本身不包含任何网络信息,需要自己的高度定制



container
容器间公用网络空间,一个进阶版的容器名称通信
1.png
overlay
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。