Docker实战系列【网络详解】
【摘要】 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
# -p示例
docker -d -p 10.211.55.3:777
网络模式
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模式来上网,默认模式,自由方便,不可控
容器连接到虚拟网桥,借助于宿主机的nat模式来上网,默认模式,自由方便,不可控
docker容器默认采用的网络模型是bridge
同一宿主机上的默认网络模型的容器,都可以自由通信
不同宿主机上的容器由于网络地址相同,不能通行
可以通过 -icc 使同一宿主机下的容器间不能自由通信
也可以通过容器间互联的方式进行通信
host
借助于宿主机的i p地址来进行通信,性能好,多主机容器间无网络隔离,受宿主机端口限制
借助于宿主机的i p地址来进行通信,性能好,多主机容器间无网络隔离,受宿主机端口限制
192.168.8.12主机开启haproxy和tomcat-appl 容器
192.168.8.13主机开启tomcat-app2 容器
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
容器间公用网络空间,一个进阶版的容器名称通信
overlay
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)