通过前面的学习,我们已经可以把自己写的微服务项目通过dockerfile文件方式部署到docker上面了(可以移步到:docker高级篇:实战-自己开发的微服务怎么在docker上面运行?)。那么微服务之间通信,怎么通信的?是在同一个网络还是在不同的网络环境下?docker中怎么配置网络环境呢?本文咱们就一起学学docker网络。
本文是凯哥学docker系列高级篇之Docker网络上集。
直通车,本系列教程已发布文章,快速到达,《Docker学习系列》教程已经发布的内容如下:
【图文教程】Windows11下安装Docker Desktop
【填坑】在windows系统下安装Docker Desktop后迁移镜像位置
【Docker学习系列】Docker学习1-docker安装
【Docker学习系列】Docker学习2-docker设置镜像加速器
【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?
【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令
【Docker学习系列】Docker学习系列3:常用命令之容器命令
【Docker学习系列】Docker学习4-常用命令之重要的容器命令
【Docker教程系列】Docker学习5-Docker镜像理解
【Docker教程系列】Docker学习6-Docker镜像commit操作案例
【Docker学习教程系列】7-如何将本地的Docker镜像发布到阿里云
【Docker学习教程系列】8-如何将本地的Docker镜像发布到公司镜像服务器上?
「Docker学习系列教程」10-Docker容器数据卷案例
docker高级篇1-dockeran安装mysql主从复制
docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置
docker高级篇第二章-分布式存储之实战案例:主从容错切换迁移案例
Docker高级:Redis集群实战!4主4从缩容到3主3从,怎么处理?
docker高级篇第三章-dockerfile案例之制作自己的centos镜像
在不启动docker之前,我们来看看宿主机的网络情况。使用命令:ifconfig
说明:
ens33:是宿主机的ip.比如我们想通过我们物理机Windows连接到虚拟机宿主机的话,就是用的是这个ip.
lo:local,本地地址。
virbro:centos在虚拟化的时候,会安装一个以网桥连接的私网地址。默认就是192.168.122.1。是做虚拟机网桥使用的。
启动docker后,在查看宿主机网络情况.命令依然是ifconfig
我们发现会多出一个 docker0的网卡。这个就是本章节需要讲解的。
使用命令查看:
docker network ls
bridge、host、none是默认创建的3大网络模式。
我们先来help下,看看docker network都有哪些命令
命令:
查看命令:
网络模式
docker网络有以下几种模式:
其中比较常用的是bridge和host模式。
先启动两个ubuntu
查看网络情况:
docker inspect u1
或者只查看倒数20行
docker inspect ul | tail -n 20
我们再来看看u2的网络设置
假设我们把uw rm -f
然后我们在启动一个u3
再来看看U3的ip:
哇哦!ip是0.3。我们发现这个时候u3的ip竟然复用了u2的ip.这是多么可怕。
比如,在实际中,u2上面安装的是mysql.u2宕机后,创建了u3,向redis集群使用。但是,项目中写的ip还是172.17.0.3来链接数据库。那么u3启动后,是redis服务。程序链接MySQL也来找0.3。是不是很可怕。所以,在服务中,写死ip的需要注意。
所以,在实际中,我们在规划服务的时候,ip应该写死的。
那么怎么处理呢?我们会用到
docker network create 网络名称
如操作有问题欢迎留言交流哦。
大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。