进阶Docker4:网桥模式、主机模式与自定义网络

目录

 网络相关

子网掩码

网关

规则

docke网络配置

bridge模式

host模式

创建自定义网络(自定义IP)


 网络相关


  • IP
  • 子网掩码
  • 网关
  • DNS
  • 端口号

子网掩码


互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。
IP 地址在设计时就考虑到地址分配的层次特点,将每个 IP 地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。
子网掩码是 “255.255.255.0” 的网络:
最后面一个数字可以在 0~255 范围内任意变化,因此可以提供 256 个 IP 地址。但是实际可用的 IP 地
址数量是 256-2 ,即 254 个,因为主机号不能全是 “0” 或全是 “1” 。
子网掩码是 “255.255.0.0” 的网络:
后面两个数字可以在 0~255 范围内任意变化,可以提供 255² 个 IP 地址。但是实际可用的 IP 地址数量
是 255²-2 ,即 65023 个。 IP 地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根
据子网寻径规则,很可能发往和本地主机不在同一子网内的目标主机的数据,会因为错误的判断而
认为目标主机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正
确到达目标主机,导致网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网
内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负
担,造成网络效率下降。
因此,子网掩码应该根据网络的规模进行设置。如果一个网络的规模不超过 254 台电脑,采用
“255.255.255.0” 作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此
“255.255.255.0” 是最常用的 IP 地址子网掩码;假如在一所大学具有 1500 多台电脑,这种规模的局
域网可以使用 “255.255.0.0” 。

网关


网关实质上是一个网络通向其他网络的IP地址。 路由器(Windows下叫默认网关,网关就是路由,路由就是网关不要蒙)

规则

计算机的 IP 地址由两部分组成,一部分为网络标识,一部分为主机标识,同一网段内的计算机网络部分相同,主机部分不同同时重复出现。
路由器连接不同网段,负责不同网段之间的数据转发,交换机连接的是同一网段的计算机。通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的IP 地址不会互相重叠,即 IP 地址具有了唯一性。
在计算机网络中,主机 ID 全部为 0 的地址为网络地址,而主机 ID 全部为 1 的地址为广播地址
这 2 个地址是不能分配给主机用的。

docke网络配置


当你安装了docker,它会自动创建3个网络,可以使用 docker network ls 命令来查看

  • bridge
  • host
当你运行一个容器的时候,可以使用 --network 参数来指定你的容器连接到哪一个网络。

bridge模式


当 Docker 进程启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。
虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
从 docker0 子网中分配一个 IP 给容器使用,并设置 docker0 的 IP 地址为容器的默认网关。
在主机上创建一对虚拟网卡 veth pair 设备, Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为eth0 (容器的网卡),另一端放在主机中,以 vethxxx 这样类似的名字命名,并将这个网络设备加入到docker0 网桥中。
bridge 模式是 docker 的默认网络模式,不写 --net 参数,就是 bridge 模式。
  • 查看bridge信息
docker inspect brid
  • 打开容器
docker run -itd --net=bridge --name cname iname
  • 查看docker0网桥
  • 查看容器网络
ip addr
ifconfig
docker0 就像是一个路由器,容器就像是路由器下的设备,它们在同一个网段内,可以互相 ping 通。
每个容器都有自己独立的ip,如果外部需要访问 需要设置端口映射  默认模式都是网桥
  • 外部访问

设置端口映射

docker run -itd --name bridge03 -p 8081:8080 spring:1.0

-p参数可以出现多次,绑定多个端口号

docker run -itd --name bridge05 -p 8082:8080 -p 8083:8080 spring:1.0

 使用mysql 

docker run -it --name c1 centosmkdir -p /mysql/{conf,data}grant all on *.* to dbl@'%' identified by '123456';

修改了application.xml 文件ip地址后,重启容器 ip 地址会发生改变。

注: 网桥中的ip只能自动生成

host模式


如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace ,而是和宿主机共用一个Network Namespace 。
容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP和端口。
但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的;
比如主机端口号是8080那么容器的端口号也是8080,共用一个端口号。

 主机模式 容器与主机共用端口与网络

docker run -itd \
--name t1 \
--net host \
tomcat:8.5.20

创建自定义网络(自定义IP)


  • 支持自定义ip
  • 支持容器名的方式

手动指定网段

docker network create --subnet=172.20.0.0/16 mynet

固定ip启动容器

docker run -it \
--name t1 \
-p 8080:8080 \
-v /soft:/usr/local/tomcat/webapps \
--net mynet \
--ip 172.20.0.100 \
tomcat:8.5.20docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
--net mynet \
--ip 172.20.0.99 \
-d mysql/mysql-server:5.7

指定两个不同的容器

----------------mynet
docker run  -it \
--name c1 \
--net mynet \
--ip 172.20.100.100 \
-d centos----------------bridge
docker run  -it \
--name c2 \
-d centos让c1连接到bridge网络中
docker network connect bridge c1

测试

docker exec -it c1 ping mynetdocker exec -it c1 ping 172.20.100.100

跨网桥测试

docker exec -it c2 ping mynet

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

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

相关文章

python实现屏幕颜色获取

为了实时监听鼠标移动并输出鼠标当前位置的颜色值,你可以结合使用pyautogui和pynput库。pynput库可以用来监听鼠标事件,而pyautogui则可以用来获取鼠标当前位置的屏幕颜色。 首先,你需要安装这两个库(如果尚未安装)&a…

FreeBSD上安装mysql数据库

安装前提 1、使用pkg安装mysql有个前提FreeBSD版本12.2及以上。 2、内存最好是8GB及以上 安装 $ pkg search mysql …… mysql80-client-8.0.35 Multithreaded SQL database (client) mysql80-server-8.0.35 Multithreaded SQL database (server) mysql81…

SpringAOP-说说 Spring AOP 和 AspectJ AOP 区别

Spring AOP Spring AOP 属于运行时增强,主要具有如下特点: 基于动态代理来实现,默认如果使用接口的,用 JDK 提供的动态代理实现,如果是方法则使用 CGLIB 实现Spring AOP 需要依赖 IOC 容器来管理,并且只能…

浅谈安科瑞铁塔/基站电力监控解决方案

I.背景信息: 2020年5G元年,通信行业承蓬勃发展之态,各大运营商和铁塔集团在布局新一代通讯基站。基站用电量不断上升,通信基站智能化电力监控及节能管理已成为各运营商企业的研究方向。 而同时,目前铁塔基站电力使用…

靶机-basic_pentesting_2

basic_pentesting_2 arp-scan -l查找靶机IP masscan 192.168.253.154 --ports 0-65535 --rate10000 端口扫描 nmap扫描nmap -T5 -A -p- 192.168.253.154 目录扫描80端口 http://192.168.253.154/development/dev.txt 2018-04-23: I’ve been messing with that struts stu…

面向Java开发者的ChatGPT提示词工程(10)

在ChatGPT的众多应用中,拼写检查和语法检查犹如璀璨的明珠,受到广大用户的热烈追捧。我对此深信不疑,且一直在实践中坚定不移。特别是在使用非母语的情况下,它的作用更为显著。接下来,让我们通过一些常见的拼写和语法问…

mipi协议

完成mipi信号通道分配后,需要生成与物理层对接的时序、同步信号: MIPI规定,传输过程中,包内是200mV、包间以及包启动和包结束时是1.2V,两种不同的电压摆幅,需要两组不同的LVDS驱动电路在轮流切换工作&#…

数据集成时表模型同步方法解析

01 背景介绍 数据治理的第一步,也是数据中台的一个基础功能 — 即将来自各类业务数据源的数据,同步集成至中台 ODS 层。业务数据源多种多样,单单可能涉及到的主流关系型数据库就有近十种。功能更加全面的数据中台通常还具有对接非关系型数据…

mac查看maven版本报错:The JAVA_HOME environment variable is not defined correctly

终端输入mvn -version报错: The JAVA_HOME environment variable is not defined correctly, this environment variable is needed to run this program. Java环境变量的问题,打开bash_profile查看 open ~/.bash_profile export JAVA_8_HOME/Library/Java/JavaVirtualMachine…

Python图像处理【18】边缘检测详解

边缘检测详解 0. 前言1. 图像导数2. LoG/zero-crossing2.1 Marr-Hildteth 算法 3. Canny 与 holistically-nested 算法3.1 Canny 边缘检测3.2 holistically-nested 边缘检测 小结系列链接 0. 前言 边缘是图像中两个区域之间具有相对不同灰级特性的边界,或者说是亮度…

学习记录1.14

1.display: 2.bfc: Bfc是块级格式化上下文 子元素不受外界影响 有自己的渲染规则 比如说:计算高度的时候浮动元素的高度也会计算在内 怎样触发BFC 绝对定位以及固定定位 flex布局 display不是none的情况 overflow:hidde…

应用案例 | Softing工业物联网连接解决方案助力汽车零部件供应商实现智能制造升级

随着业务的扩展和技术的进步,某国际先进汽车零部件供应商在其工业物联网的升级方案中使用了Softing的dataFEED OPC Suite——通过MQTT协议将现场控制器和数控系统的数据上传到其物联网云平台,从而实现了设备状态的远程监控,不仅能够提前发现设…

【机器学习300问】9、梯度下降是用来干嘛的?

当你和我一样对自己问出这个问题后,分析一下!其实我首先得知道梯度下降是什么,也就它的定义。其次我得了解它具体用在什么地方,也就是使用场景。最后才是这个问题,梯度下降有什么用?怎么用? 所以…

C语言第一弹---C语言基本概念(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 C语言基本概念 1、C语言是什么?2、C语言的历史和辉煌3、编译器的选择VS20223.1、编译和链接3.2、编译器对比3.3、VS2022优缺点 4、VS项目和源文件、头…

LeetCode 每日一题 2024/1/8-2024/1/14

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 1/8 447. 回旋镖的数量1/9 2707. 字符串中的额外字符1/10 2696. 删除子串后的字符串最小长度1/11 2645. 构造有效字符串的最少插入数1/12 2085. 统计出现过一次的公共字符串…

test0117测试1

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏:《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

Hive字符串函数讲解

Hive 提供了许多内建的字符串函数来处理文本数据。以下是您提到的字符串函数的详细讲解,包括案例和使用注意事项: LENGTH() 功能:返回字符串的长度。语法:LENGTH(string)案例:SELECT LENGTH(Hello World); 结果为 11注意事项:如果输入是 NULL,则返回结果也是 NULL。UPPE…

HCIA——12题目-1章选择

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

金融CRM系统是什么?有哪些功能和作用

今年市场经济下行,投资趋向于保守、人们消费降级,对于金融行业来说影响很大。受经济形式的影响加上行业的数字化转型升级,金融企业都在寻求客户管理的新策略,维护好忠实客户、吸引新客户投资。小编认为CRM系统是管理客户的不二之选…

【数据结构和算法】反转链表

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:迭代(双指针) 2.2 方法二:递归 三、代码 3.…