Docker从认识到实践再到底层原理(八)|Docker网络

news2024/11/25 4:44:36

在这里插入图片描述

前言

那么这里博主先安利一些干货满满的专栏了!

首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。

  • 高质量博客汇总

然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关注!

  • Docker从认识到实践再到底层原理

第八章-网络

1. Docker为什么需要网络

参考:比特就业课

容器的网络默认与宿主机及其他容器都是相互隔离, 但同时我们也要考虑下面的一些问题, 比如

  • 多个容器之间是如何通信的
  • 容器和宿主机是如何通信的
  • 容器和外界主机是如何通信的
  • 容器中要运行一些网络应用(如 nginx、web 应用、数据库等),如果要让外部也可以访问这些容器内运行的网络应用应该如何实现
  • 容器不想让它的网络与宿主机、与其他容器隔离应该如何实现
  • 容器根本不需要网络的时候应该如何实现
  • 容器需要更高的定制化网络(如定制特殊的集群网络、定制容器间的局域网)应该如何实现

上述的这些问题都需要我们对容器的网络进行合理的管理才能解决,这就体现出了容器网络管理的重要性。

2. Docker网络架构模型

CNM

在这里插入图片描述

Docker 网络架构采用的设计规范是 CNM(Container Network Model)。CNM 中规定了 Docker 网络的基础组成要素:Sandbox、Endpoint、Network。

3. 常见Docker网络类型

3.1 bridge 网络

bridge 驱动会在 Docker 管理的主机上创建一个 Linux 网桥。默认情况下,网桥上的容器可以相互通信。也可以通过 bridge 驱动程序配置,实现对外部容器的访问。Docker 容器的默认网络驱动.当我们需要多个容器在同一个 Docker 主机上通信时,桥接网络是最佳选择。

3.2 host 网络

对于独立容器,移除容器和 Docker 主机之间的网络隔离,并直接使用主机的网络。当网络堆栈不应该与 Docker 主机隔离,但是希望容器的其他资源被隔离时,主机网络是最佳选择。

3.3 container 网络

这个模式指定新创建的容器和引进存在的一个容器共享一个网络 ,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 ip,而是和一个指定的容器共享 ip,端口等,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

3.4 none 网络

Docker 容器拥有自己的 Network Namespace,但是,并不为 Docker 容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。容器完全网络隔离。

3.5 overlay 网络

借助 Docker 集群模块 Docker Swarm 搭建的跨 Docker Daemon 网络。将多个Docker 守护进程连接在一起,使集群服务能够相互通信。当我们需要运行在不同Docker 主机上的容器进行通信时,或者当多个应用程序使用集群服务协同工作时,覆盖网络是最佳选择。

4. 命令详解

4.1 命令清单

命令功能
docker network create创建网络
docker network connect连接网络
docker network disconnect断开网络
docker network ls列出网络
docker network prune删除不使用的网络
docker network inspect查看网络详情
docker network rm删除1个或多个网络

4.2 docker network create

在这里插入图片描述

一创建出来就自带了三个网络。

docker network create [OPTIONS] NETWORK

关键参数。

-d, --driver : 网络驱动
--gateway : 网关地址
--subnet : 表示网段的 CIDR 格式的子网
--ipv6 : 启用 ipv6

在这里插入图片描述

默认给的就是bridge驱动。

4.3 docker network inspect

docker network inspect [OPTIONS] NETWORK [NETWORK...]

参数

-f, --format : 指定格式

在这里插入图片描述

[
    {
        "Name": "bridge",
        "Id": "c628e2b0d777ee8674106b75d24bc0ba856047abced6d2ad84e101611461092a",
        "Created": "2023-09-01T20:57:06.849887313+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

4.4 docker network connect

于将容器连接到网络。可以按名称或 ID 连接容器。 一旦连接,容器可以与同一网络中的其他容器通信。

docker network connect [OPTIONS] NETWORK CONTAINER

关键参数。

--ip : 指定 IP 地址
--ip6 : 指定 IPv6 地址

实操。

启动一个容器,然后看他的ip。

在这里插入图片描述

连上网,ifconfig就可以看到了。

在这里插入图片描述

4.5 docker network disconnect

docker network disconnect [OPTIONS] NETWORK CONTAINER

参数。

-f : 强制退出

在这里插入图片描述

4.6 docker network prune

删除不使用的网络。

docker network prune [OPTIONS]

参数。

-f , --force : 不提示

4.7 docker network rm

删除一个或多个网络。

docker network rm NETWORK [NETWORK...]

参数。

-f : 强制退出

4.8 docker network ls

遍历所有网络。

-f, --filter : 指定过滤条件
--format : 指定格式
--no-trunc : 不截断
-q, --quiet : 仅仅显示 id

5. Docker Bridge 网络

5.1 bridge网络详解

5.1.1 什么是bridge网络

Docker Bridge 网络采用内置的 bridge 驱动,bridge 驱动底层采用的是 Linux 内核中 Linux bridge 技术。就网络而言,bridge 网络是在网络段之间转发流量的链路层设备,而网桥可以是在主机内核中运行的硬件设备或软件设备;就 Docker 而言,桥接网络使用软件网桥 docker0,它允许连接到同一网桥网络的容器进行通信,同时提供与未连接到该网桥网络容器的隔离。

5.1.2 操作案例一

启动两个镜像。

在这里插入图片描述

在第一个容器ping第二个,在第二个容器ping第一个。

在这里插入图片描述

在这里插入图片描述

这两个就是两个容器的ip地址。

在这里插入图片描述

第一个ping第二个,ping成功了。

在这里插入图片描述

第二个ping第一个,也ping到了。

5.1.3 操作案例二

默认情况下,如操作案例一所示。我们默认创建的容器都会连接在docker0这个bridge上。但是我们也可以用我们自定义的bridge来通信。

先创建一个网络。

在这里插入图片描述

看一下这个桥的信息。

在这里插入图片描述

启动两个容器。

在这里插入图片描述

可以ping通。

在这里插入图片描述

5.2 DNS解析

Docker 自定义桥接网络是支持通过 Docker DNS服务进行域名解析的, 也就是说我们可以直接使用容器名进行通信,因为 DNS 服务可以解析容器名到 IP 地址的映射, 但是默认的 bridge网络是不支持 DNS 的。

实验很简单,就是用容器名字来ping就行了,其他步骤和#5.1的是一样的。

结论:

  • 默认的桥不支持这个DNS
  • 自定义的桥是支持DNS的

5.3 端口的暴露和转发

先启动一个nginx容器。

在这里插入图片描述

6. Docker Host 网络

6.1 什么是host网络

在这里插入图片描述

意思就是,根本就不需要虚拟的网卡,直接连宿主机的网卡,直接用宿主机的。

6.2 操作案例

创建两个容器,分别用不同的网络类型。

docker run -itd --name b1 busybox:1.36.0

这个默认用的是bridge网络。

docker run -itd --name b2 --network host busybox:1.36.0 

这个指定用host网络。

在这里插入图片描述

分别查看这两个容器网络的差异。

我们分别查看这两个网络的信息。

在这里插入图片描述

第一个容器里面只查到两个。

在这里插入图片描述

第二个容器里面能查到很多个,毕竟第二个容器直接连了宿主机的网卡。

7. Docker Container 网络

在这里插入图片描述

这种网络也是用别人的网卡,只不过是,使用的是另外一个容器的网卡(虚拟的),而不是使用宿主机的网卡。

7.2 操作案例

docker run -itd --name b2 --network container:b1 busybox:1.36.0

b1和上面一样,b2就是这样创建。

在这里插入图片描述

发现两个的私网ip是一样的。

如果此时直接把b1停掉,b2会怎样呢?

在这里插入图片描述

发现此时外部的ip直接没了。

8. Docker None 网络

8.1 none 网络介绍

none 网络就是指没有网络。挂在这个网络下的容器除了 lo(本地回环),没有其他任何网卡。

反正就是没有网络。

8.2 操作案例

在这里插入图片描述

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

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

相关文章

WiFi网络分析工具Airtool for Mac

Airtool是一款Mac平台上的WiFi网络分析工具,它可以帮助用户监测、分析和管理无线网络。 以下是Airtool的一些主要功能和特点: 实时监测:Airtool可以实时监测当前Mac设备所连接的WiFi网络,包括网络速度、信号强度、连接状态等。信…

Linux CentOS7 vim重复行

在用vim编辑处理文件时,会有重复行。有的是情境需要,有的可能是误操作而形成。对于正常形成的重复行,我们不作讨论,我们仅讨论什么情况下会出现重复行,如何避免,如何处理。 在文件中的单行或多个连续空白行…

Docker从认识到实践再到底层原理(九)|Docker Compose 容器编排

前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

每日一练-Q1-大数加法-20231001

目录 1.题目描述 2.输入描述 3.示例提示 4.问题分析 5.通过代码 1.题目描述 大数一直是一个c语言的一个难题。 现在我们需要你手动模拟出大数加法过程。 请你给出两个大整数加法结果。 2.输入描述 第一行输入整数n&#xff0c;第二行输入整数m。 (1<number<1e100)…

Leetcode 224. 基本计算器

文章目录 题目代码&#xff08;10.1 首刷看解析&#xff09; 题目 Leetcode 224. 基本计算器 代码&#xff08;10.1 首刷看解析&#xff09; class Solution { public:int calculate(string s) {stack<int> sk; // 存储正负号sk.push(1);int sign 1;int res 0;int i…

优维低代码实践:应用级配置

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

【Vue】Vuex详解,一文读懂并使用Vuex

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《ELement》。&#x1f3af;&#x1f3af; &#x1…

一图带你了解封装与分用

一、前缀知识 IP地址&#xff1a;用于定位主机的网络地址。 端口号&#xff1a;区分主机上不同的应用程序。 协议&#xff1a;描述了网络通信传输的数据的含义。 二、TCP/IP五层网络模型 物理层&#xff1a;描述了网络通信中基础设施的规范。 数据链路层&#xff1a;相邻节点之…

fcntl函数 非阻塞轮询

fcntl&#xff08;&#xff09; 在打开的文件描述符 FD 上执行下面描述的操作之一。 操作由 cmd 确定。 fcntl&#xff08;&#xff09; 可以采用可选的第三个参数。 是否需要此参数由 cmd 确定。 所需的参数类型在后面的括号中指示。 每个cmd名称&#xff08;在大多数情况下&…

公众号迁移是什么?

公众号账号迁移的作用是什么&#xff1f;只能变更主体吗&#xff1f;微信公众平台的帐号迁移功能可将原公众号的粉丝、文章素材、违规记录、留言功能、名称等迁移至新的公众号。通过迁移可以实现公众号的公司主体变更、粉丝转移、开通留言功能、服务号转为订阅号等作用。因此不…

博弈论——劳资博弈

劳资博弈 0 引言 前一篇文章介绍了静态博弈中常见的几个案例以及场景&#xff0c;并且在此之前也还介绍过斯塔克尔伯格博弈等动态博弈&#xff0c;以及相关的解决方法——反应函数法。今天我们继续介绍一个常见的动态博弈——劳资博弈&#xff0c;并利用反应函数解决&#xff…

视觉人机器视觉线下培训遵循十大原则

1.​上课期间&#xff0c;自习时间没收手机&#xff0c;偷偷使用手机&#xff0c;将会被通报严重批评。 2.完善的教学设备&#xff0c;与具备现场落地设备要求。 3.教学与实操结合&#xff0c;老师教学的同时&#xff0c;要求你按照老师的效果&#xff0c;进行复现&#xff0…

黑马程序员RabbitMQ入门到实战教程【基础篇】学习笔记

目录 一、初始MQ 1.1、同步调用 1.2、异步调用 1.3、MQ技术选型 二、RabbitMQ 2.1、安装 2.2、收发消息 2.2.1、交换机 2.2.2、队列 2.2.3、绑定关系 2.2.4、发送消息 2.3、数据隔离 2.3.1、用户管理 2.3.2、virtual host 三、SpringAMQP 3.1、导入Demo工程 3…

【中国知名企业高管团队】系列23:金山软件KINGSOFT

今天是2023年10月1日&#xff0c;第74个国庆节&#xff0c;华研荟祝各位小伙伴节日快乐&#xff01;阖家幸福&#xff01; 这个特别的日子里&#xff0c;我们来了解金山软件的高管团队。 说到金山软件&#xff0c;可能很多非IT圈的人或者年轻的朋友们不一定知道&#xff0c;但…

【LeetCode热题100】--101.对称二叉树

101.对称二叉树 使用递归&#xff1a; 实现一个递归函数&#xff0c;通过同步移动两个指针的方法来遍历这颗树&#xff0c;p 指针和 q 指针一开始都指向这棵树的根&#xff0c;随后 p 右移时&#xff0c;q左移&#xff0c;ppp 左移时&#xff0c;q 右移。每次检查当前 p 和 q节…

【STM32 LVGL基础教程】初识LVGL

文章目录 前言一、什么是LVGL&#xff1f;二、LVGL的诞生历程三、LVGL的用途四、模拟器使用LVGL4.1 下载codeblocks并运行模拟器lvgl4.2 更改lvgl设置更改帧数更改颜色深度 五、STM32使用LVGL总结 前言 嵌入式系统中的图形用户界面&#xff08;GUI&#xff09;已经成为现代设备…

小说推文和短剧推广以及电影达人带货电影票

小说推文、短剧推广、电影达人&#xff08;带或电影票&#xff09;都可以通过“巨量推文“进行申请授权 小说推文和短剧推广是什么&#xff1f; 小说推文和短剧推广的逻辑其实一样&#xff0c;分为cpa拉新和cps分成的推广形式 cpa拉新是你推广的用户必须为新用户&#xff0c…

【 SuperPoint 】图像特征提取上的对比实验

1. SIFT&#xff0c;SuperPoint 都具有提取图片特征点&#xff0c;并且输出特征描述子的特性&#xff0c;本篇文章从特征点的提取数量&#xff0c;特征点的正确匹配数量来探索一下二者的优劣。 SuperPoint提取到的特征点数量要少一些&#xff0c;可以理解&#xff0c;我想原因大…

mac如何卸载应用并删除文件,2023年最新妙招大公开!

大家好&#xff0c;今天小编要为大家分享一些关于mac电脑的小技巧&#xff0c;特别是关于如何正确卸载应用程序以及清理卸载后的残留文件。你知道吗&#xff1f;很多人都不知道&#xff0c;mac系统默认的卸载方式可能会导致一些残留文件滞留在你的电脑上&#xff0c;慢慢地占用…

算法竞赛备赛之贪心算法训练提升,贪心算法基础掌握

1.区间问题 905.区间选点 给定N个闭区间[ai, bi]&#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量&#xff0c;位于区间端点上的点也算作是区间内。 将每个按区间的右端点从小到大排序 从前往后依次枚举每…