Docker 网络模式 -day05

news2024/9/22 17:22:29

docker 启动时候还会有,名为docker0的虚拟网桥,注意网址为 127.0.0.1

[root@iZuf6hxabqikytnrumsi4gZ ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:7fff:fe81:d287  prefixlen 64  scopeid 0x20<link>
        ether 02:42:7f:81:d2:87  txqueuelen 0  (Ethernet)
        RX packets 135  bytes 9419 (9.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 213  bytes 15282 (14.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 查看docker的 网络命令

docker network COMMAND

如下: 

docker network ls    查看网络
docker network create 网络名    创建网络
docker network connect 网络名    为容器连接到网络
docker network disconnect 网络名    断开容器的网络
docker network inspect 网络名    查看网络源数据
docker network rm 网络名字    删除网络
docker network prune    删除所有无用的网络
 

一、Docker网络模式

Docker有四种网络模式:

  •         bridge模式:默认设置,容器和宿主机都配置在一个网络空间中。
  •         none模式:不配置任何网络参数,需要手动配置。
  •         host模式:容器和宿主机共享一个网络命名空间,不配置独立的网络空间。        
  •         container模式:将容器设置为网络命名空间,使容器和宿主机有相同的IP地址和端口号。

二、 bridge:网桥模式 

查看容器ip,可以看到容器内的 IPAddress 与上面 docker0在同一个网段。

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS          PORTS                                                  NAMES
462ff8d8719e   b66e5037b732   "bash"                   3 minutes ago   Up 31 seconds   80/tcp                                                 centosjava8
a34aff536643   redis:6.2.6    "docker-entrypoint.s…"   13 days ago     Up 3 hours      0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis6.2.6
2a384f369e0b   mysql:5.7      "docker-entrypoint.s…"   2 weeks ago     Up 3 hours      0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql5.7

2-查看最后二十行关于网络的配置
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker inspect centosjava8|tail -n 20
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "a09227a0c60fe5b8afd1082d3ba2d5d7425d0f7aeafd861caf1d8103886f34c7",
                    "EndpointID": "9a3b00d21d96ec4e1bf34549b77429ecd835e0f69db4d92bc27e03354f75239b",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]

 网桥模式通信示意图:

1、整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼比联通(这样一对接口叫veth pair) :
2、 每个容器实例内部也有一块网卡,每个接口叫eth0;
3、docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对。

所以:网桥模式下:docker0 相当于交换机一样功能,让各个容器通信

 三、主机模式

容器将不会获得一个独立的Network Namespace, 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。

 启动一个本地的镜像:以host 方式

docker run -it  --network=host --name centosjava8 b66e5037b732 bash

 容器共享宿主机ip,端口也是默认的。

1-查看容器
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
74e40d517ff9   b66e5037b732   "/bin/sh -c /bin/bash"   3 minutes ago   Up 3 minutes                                                          kind_kepler
a34aff536643   redis:6.2.6    "docker-entrypoint.s…"   2 weeks ago     Up 7 hours     0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis6.2.6
2a384f369e0b   mysql:5.7      "docker-entrypoint.s…"   2 weeks ago     Up 7 hours     0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   mysql5.7

2-查看容器信息 看到host方式启动。与宿主机共用一份,ip网关都是空的
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker inspect 74e40d517ff9|tail -n 20
            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "f41a3dd68f79020a979539af616a2fadbb7cb95f18597a1611d4ef19198d9039",
                    "EndpointID": "331746e74ee6e7a53ffd2d32aa3d00ab15e53ff2037ec3b0584a2c1007e98247",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@iZuf6hxabqikytnrumsi4gZ ~]# 

 四、none网络模式

在none模式下,并不为Docker容器进行任何网络配置。 也就是说,这个Docker容器没有网卡、IP、路由等信息,只有一个lo需要我们自己为Docker容器添加网卡、配置IP等。

五、 container网络模式 

新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

示例如下:

借用容器 centosjava8 的配置,共用一个网桥,如果关闭centosjava8 容器那么生成的centosjava81也就没有ip

docker run -it --network container:centosjava8  --name centosjava81 b66e5037b732 bash

 如图:

六、自定义网络 

 docker多个容器之间的集群规划要使用服务名,因为ip是会变动,使用自定义网络模式能够使用服务名进行通信


1-创建自定义网络
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker network create mynetwork
f43d61b56f9e124f6ea6cd80d627d15990c7a9316974be773c33d7d232731212

2-查看自己创建的网络 mynetwork
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker network ls
NETWORK ID     NAME        DRIVER    SCOPE
e8026a20994a   bridge      bridge    local
f41a3dd68f79   host        host      local
f43d61b56f9e   mynetwork   bridge    local
9eae36819684   none        null      local
[root@iZuf6hxabqikytnrumsi4gZ ~]# 

 后台启动2个容器:

docker run -it  --network mynetwork --name t1 centosjava8:1.0


docker run -it  --network mynetwork --name t2 centosjava8:1.0

 过程如下

1-查看镜像
[root@syf ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centosjava8   1.0       b66e5037b732   8 days ago      1.27GB
redis         6.2.6     7614ae9453d1   24 months ago   113MB
mysql         5.7       c20987f18b13   24 months ago   448MB



[root@syf ~]# docker run -it  --network mynetwork --name t1 centosjava8:1.0

[root@syf ~]# docker run -it  --network mynetwork --name t2 centosjava8:1.0


2-查看容器
[root@syf ~]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED              STATUS              PORTS                                                  NAMES
9bc9c68b9582   centosjava8:1.0   "/bin/sh -c /bin/bash"   27 seconds ago       Up 26 seconds       80/tcp                                                 t2
e50315d22041   centosjava8:1.0   "/bin/sh -c /bin/bash"   About a minute ago   Up About a minute   80/tcp                                                 t1
a34aff536643   redis:6.2.6       "docker-entrypoint.s…"   2 weeks ago          Up 6 minutes        0.0.0.0:6379->6379/tcp, :::6379->6379/tcp              redis6.2.6
2a384f369e0b   mysql:5.7  

3-查看 t1、t2 2个容器都是在一个网段上
[root@syf ~]# docker inspect t1|tail -n 20
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "de322bc41064e1f7314af8f991d7b984a975c890ebbcf505598f2a24bea7e52e",
                    "EndpointID": "5ab83e65694b064a8a7237a5e53fe28c6170502de8a10af0af2e8a06583057f0",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]
[root@syf ~]# docker inspect t2|tail -n 20
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "de322bc41064e1f7314af8f991d7b984a975c890ebbcf505598f2a24bea7e52e",
                    "EndpointID": "0c281bffcded7267cd9ce428ecdc9be6fb6f375b35d02f1e62080a5ac28f3ee1",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.5",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:05",
                    "DriverOpts": null
                }
            }
        }
    }
]

测试

1-进入t1容器 ping t2
[root@syf ~]# docker exec -it t1 bash

2- 用服务名也可以ping通
[root@9bc9c68b9582 local]# ping t2 -c 3
PING 172.17.0.5 (172.17.0.5) 56(84) bytes of data.
64 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.104 ms
64 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.082 ms
64 bytes from 172.17.0.5: icmp_seq=3 ttl=64 time=0.067 ms

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1325247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mangokit:golang web项目管理工具,使用proto定义http路由和错误

文章目录 前言1、mangokit介绍1.1 根据proto文件生成http路由1.2 根据proto文件生成响应码1.3 使用wire来管理依赖注入 2、mangokit实现2.1 protobuf插件开发2.2 mangokit工具 3、使用示例3.1 创建新项目3.2 添加新的proto文件3.3 代码生成 前言 在使用gin框架开发web应用时&a…

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

一、本文介绍 本文给大家带来的改进机制是MobileNetV1&#xff0c;其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构&#xff0c;并利用深度可分离卷积构建轻量级深度神经网络&#xff0c;其引入了两个简单的全局超参数&#xff0c;用于在延迟和准确…

Java--包,访问修饰符,多态数组,==和equals,hashcode,toString

包 同一个包里面不能有重复的类&#xff0c;不同的包可以有相同的类&#xff0c;包和包之间互不干涉。一个包下面有很多的类。 包的命名规则&#xff1a; 只能包含数字&#xff0c;字母&#xff0c;下划线&#xff0c;小圆点&#xff0c;但不能用数字开头&#xff0c;不能是关…

什么是数据仪表板?数据可视化仪表盘怎么制作?

在数据经济时代&#xff0c;分析数据是每个企业做出最佳决策的关键。但是&#xff0c;手动分析和解释大量数据是不可行的。数据可视化对于分析数据中存在的各种有价值信息至关重要&#xff0c;包括可见趋势和隐藏趋势等。仪表盘显示可视化趋势和信息&#xff0c;例如 KPI、趋势…

【Hadoop】HDFS shell操作与管理工具

HDFS shell操作HDFS管理工具dfsadminfsck均衡器 HDFS shell操作 HDFS 是存取数据的分布式文件系统&#xff0c;对 HDFS 的操作就是文件系统的基本操作&#xff0c;如文件的创建、修改、删除、修改权限&#xff0c;目录的创建、删除、重命名等。对 HDFS 的操作命令类似于 Linux…

Cesium 3DTiles数据格式详解

目录 0 引言1 3DTiles1.1 起源1.2 后缀类型及特点1.2.1 b3dm1.2.2 i3dm1.2.3 pnts1.2.4 cmpt1.2.5 json1.2.6 总结 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;CesiumforUnreal专栏&#x1f4a5; 标题&#xff1a;Cesium 3DTiles数据格式详解❣…

26 在Vue3中使用计算属性

概述 计算属性在真实的开发中也经常被用到。 比如在我最近在研发的一个学生管理系统中&#xff0c;学生有“所属省份”和“所属城市”两个独立属性&#xff0c;比如所属省份是四川&#xff0c;所属城市是成都&#xff0c;但是我们显示的时候要显示为“四川/成都”&#xff0c…

鸿蒙 - arkTs:渲染(循环 - ForEach,判断 - if)

ForEach循环渲染&#xff1a; 参数&#xff1a; 要循环遍历的数组&#xff0c;Array类型遍历的回调方法&#xff0c;Function类型为每一项生成唯一标识符的方法&#xff0c;有默认生成方法&#xff0c;非必传 使用示例&#xff1a; interface Item {name: String,price: N…

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测介绍题目一. 背景&#xff08;解决的问题&#xff09;二. 系统模型2.1 信道模型2.1.1 信道系数2.1.2 进行标准化 2.2 信道估计 和 数据传输2.2.1 信道估计…

【️如何理解Java中的多态】

✅如何理解Java中的多态&#xff1f; ✅理解Java中的多态 ✅ 扩展知识仓✅方法的重载✅方法的重写✅重载和重写的区别区分 ✅理解Java中的多态 多态的概念比较简单&#xff0c;就是同一操作作用于不同的对象&#xff0c;可以有不同的解释&#xff0c;产生不同的执行结果。 如果…

MT6785|MTK6785安卓核心板功能规格介绍_Helio G95核心板

MT6785安卓核心板是一款功能强大的工业级4G智能模块&#xff0c;它采用了Android 9.0操作系统。该核心板内置了蓝牙、FM、WLAN和GPS模块&#xff0c;具有高度集成的基带平台&#xff0c;结合了调制解调器和应用处理子系统&#xff0c;以支持LTE/LTE-A和C2K智能终端应用。 MTK67…

11.2 设备树下的 LED 驱动

一、修改设备树文件 首先进入该目录下 /linux/atk-mpl/linux/my_linux/linux-5.4.31/arch/arm/boot/dts 打开 stm32mp157d-atk.dts 文件&#xff0c;在根节点 "/" 最后输入以下内容&#xff1a; stm32mp1_led {compatible "atkstm32mp1-led"; // 设置…

Gobuster工具详解

目录 Gobuster工具介绍 主要特性 支持模式及全局参数列举 安装 使用 Dir模式 DNS模式 Vhost模式 fuzz模式 TFTP模式 S3、gcs模式 字典 docker运行gobuster Gobuster工具介绍 Gobuster 是一款用于在Web应用程序中进行目录和文件爆破的开源工具。它通过尝试在目标网…

【超详细】基于单片机控制的十字道路口交通灯控制

目录 最终效果 一、设计任务 二、设计报告 1 设计说明 1.1功能分析 1.1.1整体系统功能分析 1.1.2显示状态功能分析 1.1.3设置状态功能分析 1.1.4紧急状态功能分析 1.2方案比选 1.2.1车辆LED数码管倒计时显示板块 1.2.2车辆信号灯显示板块 1.2.3行人信号灯显示板块 …

JavaWeb笔记之前端开发CSS

一 、引言 1.1 CSS概念 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通用标记语言的一个应用&#xff09;或XML&#xff08;标准通用标记语言的一个子集&#xff09;等文件样式的计算机语言。CSS不仅可以静态地修饰网页&…

Open5GSUeRANSim2:对安装在同一个VM上的OPEN5GS和UERANSIM进行配置和抓取wireshark报文

参考链接&#xff1a; Configuring SCTP & NGAP with UERANSIM and Open5GS on a Single VM for the Open5GS & UERANSIM Series https://www.youtube.com/watch?vINgEX5L5fkE&listPLZqpS76PykwIoqMdUt6noAor7eJw83bbp&index5 Configuring RRC with UERANSI…

YOLOv5性能评估指标->mAP、Precision、Recall、FPS、Confienc (讲解论文关注的主要指标)

简介 这篇博客&#xff0c;主要给大家讲解我们在训练yolov5时生成的结果文件中各个图片及其中指标的含义&#xff0c;帮助大家更深入的理解&#xff0c;以及我们在评估模型时和发表论文时主要关注的参数有那些。本文通过举例训练过程中的某一时间的结果来帮助大家理解&#xf…

LeetCode:162. 寻找峰值、1901. 寻找峰值 II(二分 C++)

目录 162. 寻找峰值 题目描述&#xff1a; 实现代码与解析&#xff1a; 二分 原理思路&#xff1a; 1901. 寻找峰值 II 题目描述&#xff1a; 实现代码与解析&#xff1a; 二分 原理思路&#xff1a; 162. 寻找峰值 题目描述&#xff1a; 峰值元素是指其值严格大于左…

持续集成交付CICD:HELM 自动化完成前端项目应用发布与回滚

目录 一、实验 1.环境 2. GitLab 共享库新建HELM CI流水线 3.Jenkins新建HELM CI流水线 5.Jenkins构建前端项目 6.GitLab 共享库新建HELM CD流水线 7.Jenkins新建HELM CD流水线 8.HELM完成前端项目应用发布与回滚 9.Jenkins再次构建前端项目 10.HELM再次完成前端项目…

在灾难推文分析场景上比较用 LoRA 微调 Roberta、Llama 2 和 Mistral 的过程及表现

引言 自然语言处理 (NLP) 领域的进展日新月异&#xff0c;你方唱罢我登场。因此&#xff0c;在实际场景中&#xff0c;针对特定的任务&#xff0c;我们经常需要对不同的语言模型进行比较&#xff0c;以寻找最适合的模型。本文主要比较 3 个模型: RoBERTa、Mistral-7B 及 Llama-…