当前位置: 首页 > news >正文

Docker中Docker网络-理解Docker0与自定义网络的使用示例

场景

CentOS7中Docker的安装与配置:

CentOS7中Docker的安装与配置_centos docker sock-CSDN博客

在上面安装好Docker之后。

关于对Docker中默认docker0以及自定义网络的使用进行学习。

注:

博客:
霸道流氓气质-CSDN博客

实现

理解docker0

docker 是如果处理容器网络访问的?

为了测试,运行一个tomcat

docker run -d --name tomcat01 tomcat

我们从宿主机ping容器的ip

此时网络是通的。

Docker如何获取某个容器的ip等信息

docker inspect 3aaf

后面跟的是容器id或容器名称

此时查看宿主机网络

ip addr

发现每启动一个docker容器,docker就会给docker容器分配一个ip,

我们只要安装了docker,就会有一个docker0桥接模式,使用的技术是veth-pair技术。

此时我们再启动一个容器测试

docker run -d --name tomcat02 tomcat

发现又多了一对网络

我们发现这个容器带来网卡,都是一对对的veth-pair 就是一对的虚拟设备接口,

他们都是成对出现的,一端连着协议,一端彼此相连。

正因为有这个特性 veth-pair 充当一个桥梁,连接各种虚拟网络设备的OpenStac,

Docker容器之间的连接,OVS的连接,都是使用evth-pair技术。

来测试下tomcat01和tomcat02容器内是否互通

发现这两个容器是可以互通的。

如果发现Docker容器内在Ping时提示找不到ping命令

Docker容器内ping时提示:

bash: ping: command not found

执行如下两条命令

apt updateapt install iputils-ping

那么在ping时如何知道某个Docker容器的ip?

docker inspect 3aaf

后面跟的是docker容器的id

结论:

tomcat01和tomcat02公用一个路由器,docker0。

所有的容器不指定网络的情况下,都是docker0路由的,

docker会给我们的容器分配一个默认的可用ip。

图示:

只要容器删除,对应的网桥一对就没了!

Docker中自定义网络,自定义网络添加容器

思考一个问题,某些场景下比如微服务环境下需要使用容器名称/服务名称进行访问,或者ip需要更换迁移的情况下。

那么上面默认的docker0网络可以使用容器名进行访问吗?

可以测试下

发现使用容器名是ping不通的。

查看所有的docker网络

docker network ls

docker的网络模式:

bridge :桥接 docker(默认,自己创建也是用bridge模式)

none :不配置网络,一般不用

host :和所主机共享网络

container :容器网络连通(用得少!局限很大)

其中

我们直接启动的命令 --net bridge,而这个就是我们得docker0

bridge就是docker0

docker run -d -P --name tomcat01 tomcat

等价于 =>

docker run -d -P --name tomcat01 --net bridge tomcat

docker0,特点:默认,域名不能访问。 --link可以打通连接,但是很麻烦!且不建议使用--link的方式。

所以我们自定义网络

Docker中自定义网络的语法

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

这个例子中,我们创建了一个名为mynet的自定义网络,使用了 bridge 驱动,并指定了一个子网和网关。

这样配置后,连接到这个网络的容器将会在这个指定的子网内,并且默认情况下可以通过指定的网关进行通信。

此时再查看网络列表

还可以查看该自定义网络的详情

docker network inspect mynet

后面跟的是自定义网络的名称

此时启动容器时就可以指定网络

启动如下两个容器

docker run -d -P --name tomcat-mynet-01 --net mynet tomcat
docker run -d -P --name tomcat-mynet-02 --net mynet tomcat

此时这两个容器通过ip和名称都可以互通

Docker自定义网络如何添加已经运行的容器

上面使用默认docker0的容器如果想使其与自定义网络的容器互通,可以通过如下将其加入进来

docker network connect mynet tomcat01

此时就可以网络互通了。

http://www.lryc.cn/news/410697.html

相关文章:

  • 领域驱动大型结构之SYSTEM METAPHOR(系统隐喻)
  • web前端开发一、VScode环境搭建
  • DiAD代码use_checkpoint
  • nginx出现Refused to apply inline style because it violates
  • 【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组⑥ | 11.15 - 11.17
  • 基础警务互联网app
  • 为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!
  • 在国产芯片上实现YOLOv5/v8图像AI识别-【2.2】RK3588上C++开发环境准备及测试更多内容见视频
  • 2024数据资产入表财务实操手册
  • react.16+
  • 如何实现MySQL对某一张表的binlog日志进行记录
  • 使用requests库进行网络爬虫:入门指南
  • 实验5-1 使用函数计算两点间的距离
  • 免费!OpenAI发布最新模型GPT-4o mini,取代GPT-3.5,GPT-3.5退出历史舞台?
  • 目标检测损失计算部分(YOLO)
  • Swift 方法
  • 哪些牌子充电宝性价比比较高?目前公认比较好用充电宝都在这儿!
  • 计算机网络必会面经
  • 深入理解 Go 数组、切片、字符串
  • STM32下的HAL库U盘数据读写
  • JavaScript(20)——事件委托
  • Linux系统安装opencv
  • nginx反向代理+nginx黑白名单+nginx负载均衡+平滑升级+配置jdk环境-7.30
  • C# Unity 面向对象补全计划 之 访问修饰符
  • JAVA多线程设计模式 (多线程程序的衡量标准)
  • 消息队列使用
  • Windows 10+Visual Studio2019 Opencv-C++安装配置
  • 百易云资产管理运营系统 comfileup.php 文件上传致RCE漏洞复现(XVE-2024-18154)
  • 【学习笔记】Redis学习笔记——第17章 集群
  • Vue - CSS基础学习