08-Docker-网络管理

news/2024/10/23 9:34:22/

Docker 在网络管理这块提供了多种的网络选择方式,他们分别是桥接网络主机网络覆盖网络MACLAN 网络无桥接网络自定义网络

1-无桥接网络(None Network)

当使用无桥接网络时,容器不会分配 IP 地址,也不会连接到主机网络。这对于特殊应用或需要完全手动配置网络设置的情况有用。在这个容器下,除了lo本地环回网络,不会有其他的网卡,一些对安全性比较高并且不需要联网的应用可以使用none network网络。
一般来说使用none network的情况并不多,特殊应用或需要完全手动配置网络设置的情况有用。

2-主机网络(Host Network)

使用主机网络时,容器与主机共享网络命名空间,它们使用主机的网络堆栈,不需要 NAT(网络地址转换)。这可以提高容器访问网络资源的性能,但可能会引入一些安全风险,因为容器共享主机的网络栈。
使用host network需要考虑端口冲突问题,有些已经host上已经使用的端口,就无法再使用了。
image.png

3-桥接网络(Bridge Network)

桥接网络是 Docker 中最常用的网络类型。在桥接网络中,每个容器分配一个唯一的 IP 地址,容器可以相互通信,也可以通过主机进行外部网络通信。这是默认的网络类型。
我们通过如下命令可以看到桥接网络的相关设置:

docker network inspect bridge

image.png
1698854671413.png
可以看到桥接网络的子网是172.17.0.0/16,容器分配的 IP 有172.17.0.3172.17.0.4容器之间可以相互通信。
通过brctl,可以管理 Linux 的桥接设备,centos中下载方式与使用方式如下:

#下载方式
sudo yum install bridge-utils  # 对于 CentOS 6
sudo dnf install bridge-utils  # 对于 CentOS 8 或 Fedora
#显示桥接设备
brctl show

image.png
可以看到容器中网卡的一端是挂载在桥接网卡docker0上的,通过这种形式实现网络链接的目的。

4-用户定义网络(Custom Network)

我们可以根据业务需求,自己定义相关的网络,docker提供了三种用户定义网络驱动,它们分别是:bridgeoverlaymacvlan。其中overlaymacvlan用于创建跨主机的网络。
我们可以使用如下命令来创建一个自定义网络,其子网为 192.168.0.0/24, 网关为192.168.0.1,容器网络名为net_2

docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.1 --driver bridge net_2

继而使用net_2网络创建两个新的容器,创建容器命令如下

docker run -it --network=net_2 --name=ub1 ubuntu /bin/bash
docker run -it --network=net_2 --name=ub2 ubuntu /bin/bash

在新的容器中安装网络查看及ping命令,可以获取如下网络信息

apt-get install -y net-tools
apt-get install -y iputils-ping

image.png
image.png
彼此之间可以ping通,实现自定义网络的通信。image.png
使用docker ps,可以看到使用系统自定义的桥接网络容器700b,进入容器后发现他使用的是172.17.0.0/12网段。
image.png
若想使得桥接网络与自定义网络容器之间可以通信,除了关注防火墙路由转发之外,还需要使用如下命令:

docker network connect net_2 700b

此时再进入容器,会发现容器中多了一个网卡,并且可以与不同网段之间容器进行通信。
image.png


http://www.ppmy.cn/news/1191665.html

相关文章

Linux纯C串口开发

为什么要用纯C语言 为了数据流动加速,实现低配CPU建立高速数据流而不用CPU干预,避免串口数据流多次反复上升到软件应用层又下降低到硬件协议层。 关于termios.h 麻烦的是,在 Linux 中使用串口并不是一件最简单的事情。在处理 termios.h 标头…

Go 内存逃逸

内存逃逸(memory escape)是指在编写 Go 代码时,某些变量或数据的生命周期超出了其原始作用域的情况。当变量逃逸到函数外部或持续存在于堆上时,会导致内存分配的开销,从而对程序的性能产生负面影响。Go 编译器会进行逃…

Visual Studio Code 常用快捷键大全

Visual Studio Code 常用快捷键大全 快捷键是编码过程中经常使用,且能够极大提升效率的部分,这里给大家介绍一些VS Code中非常有用的快捷键。 打开和关闭侧边栏 Mac — Command B Windows — Ctrl B Ubuntu — Ctrl B 选择单词 Mac — Command D …

K8S运维 解决openjdk:8-jdk-alpine镜像时区和字体问题

目录 一、问题 二、解决 三、完整代码 一、问题 由于项目的Dockerfile中使用openjdk:8-jdk-alpine作为基础镜像来部署服务,此镜像存在一定问题,例如时差8小时问题,或是由于字体问题导致导出excel文件,图片处理内容为空等。 二…

Web3时代:探索DAO的未来之路

Web3 的兴起不仅代表着技术进步,更是对人类协作、创新和价值塑造方式的一次重大思考。在 Web3 时代,社区不再仅仅是共同兴趣的聚集点,而变成了一个价值交流和创新的平台。 去中心化:超越技术的革命 去中心化不仅仅是 Web3 的技术…

JVM修炼印记之初识

文章目录 JVM认识JVM的功能常见JVMHotSpot的发展历程 JVM认识 Java虚拟机(Java Virtual Machine,JVM)是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心,可以在不同的操作系统和硬件平台上运行Java程序。 JVM负责将Java…

计算机网络之网络层(全)

网络层的功能 互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。 路由器在能够开始向输出链路传输分组的第一位之前,必须先接收到整个分组,这种机制称为:存储转发机制 异构网络互连 用…

护眼台灯哪个品牌更好?超级专业的五个台灯品牌推荐

青少年的近视率持续升高,保护眼睛非常重要。台灯是用眼环境的必备品,而市面上款式多样不知如何购买。这期就来聊聊护眼台灯的选购问题! 今天就说说照度是什么? 国A级和国AA级有什么区别? (一&#xff0…