微服务实战系列之玩转Docker(九)

server/2024/9/22 17:24:36/

前言

伙伴们,立秋了,有何收获?
每当节气更替之时,意味着半个月又过去了。“士别三日当刮目相待”,那就让心中的忖量,再多激几层浪。有梦想,必有回响。——碎碎念

在博主的玩转docker系列中,前八回重在介绍docker的基础概念、核心机制、重要组成、原理以及相关实践过程。掌握了这些内容,我想各位盆友能够独立完成小型项目的部署了。

可我们总是在前一个目标达成之时,期待再次“点火”,奔赴“星辰大海”。那么容器的大海又是啥?容器云呗。何谓 容器云?简单理解是把一堆容器“组合”起来,实现容器集群管理,以满足产品/项目的需要。各位可通过下图畅享一番。
在这里插入图片描述

在当前云原生的浪潮 下,集群化管理的思维是必备的,也是必须的。具体而言,就是要掌握 容器云这个“撒手锏”。博主私以为,每个容器就好比一间间“小房子”,可以说是“家具齐全,有窗有门”。为了实现容器云,首先要打通每个容器之间的“墙”,从而实现彼此的互联互通。

好了,闲言少叙,如何破“墙”,且听博主细细道来。

一. Docker之“墙”

各位猜猜什么是docker“墙”? 熟悉的盆友,我想很快能够脱口而出吧:namespace。因为namespace是容器技术的基础设施。离开了它,也就无法享受我们今日的“独宠”。同时,正因如此,也为应用带来了新的挑战。这里给张示意图:

在这里插入图片描述

既然容器之间是互相隔离的,那不就等同“闭关锁国”了? 事实上,有句古话说的好:“分久必合,合久必分”。在云计算以及容器界也是同理。docker通过network机制,完美实现了主机与容器、容器与容器之间的互联互通。

二. Docker互联

如何实现docker与主机或者docker之间的互联互通,这就不得不提docker的网络设计了,它是专为破墙而设计的,咱们先来看看docker支持哪些网络模式。

1. 可选的网络模式

模式描述
bridge(桥接模式)docker默认的网络模式。通过bridge实现主机-容器间的网络共享。无需在docker run时指定。(常用
host(主机模式)用于实现容器复用主机的网络资源,比如IP端口等。需通过docker run --net=host定义。(选用
container(容器共享模式)用于实现容器复用另外一个容器的网络资源等。需通过docker run --net=[container_id]或[container_name]
none(自定义模式)自定义模式,可按需设计。

docker安装完成后,可通过docker network ls查看当前内置的网络,且看下图:

在这里插入图片描述

通过以上几种模式,我们可以实现docker与主机之间以及docker之间的“互动”。其中bridge又是常用的网络模式,接下来以它为例,博主展开详细介绍。

bridge_36">2. bridge模式

2.1 实景演练

docker安装完成后,已默认安装了bridgedocker0),我们可以直接通过以下步骤进行查看和演练:

bridge_39">Step1: 查看主机bridge状态
# 查看docker网络详情
docker network inspect bridge

通过以上命令,我们得到下图:

在这里插入图片描述
注意,此刻的bridge上, container列表是空,证明当前主机没有运行中的docker

docker1_49">Step2: 启动docker1

通过docker run 启动第1个容器:

在这里插入图片描述

docker2_53">Step3: 启动docker2

通过docker run 启动第2个容器:

在这里插入图片描述

docker3_57">Step4: 启动docker3

通过docker run 启动第3个容器:

在这里插入图片描述

以上步骤均完成后,我们可知,当前bridge上连接了3个容器:docker1、docker2、docker3,同时又各自具备独立的网络信息(IP、MAC地址等),且均在一个网段上。

2.2 工作原理

bridge模式的核心思路是在主机中虚拟一个类似交换机的东东(即网桥),主机内的容器可以通过虚拟网卡veth)实现与主机的网络互联。且看下图:
在这里插入图片描述
我们可以通过docker exec访问docker1/docker2/docker3中的任意一个,在docker中,通过ifconfig查看每个docker的网络情况。这里以docker1为例:

在这里插入图片描述
同时,docker之间也可以互ping,同样是在docker1中完成:
在这里插入图片描述
从结果来看,都是互通的,当然是因为在同一个host下。

2.3 关键术语

上图中涉及一个关键网络术语:veth pair,这是啥东东?

veth-pair 是一对的虚拟的网络设备接口,成对出现。在docker中,veth-pair一端连接docker容器(即eth0),一端连接主机的bridge(即docker0)。

简单理解,就是一个网络入口,一个网络出口,这样完美实现了通过主机访问docker的需求。正因如此,我们可以直接通过映射端口的方式,直接访问容器中的应用。

结语

docker network为docker实现集群化部署提供了实践路径。而bridge模式作为常用的网络选项,受到追捧,因为它基本能够满足典型的应用系统网络集群部署的需要。当然还有更多更详细的配置要求,博主这里不再列举,可查阅相关工具书。

从今日起,博主的玩转docker系列迈开了容器的集群化部署和管理的第一步。相信未来,会有更多更详细的“解读”分享,希望各位盆友持续关注,欢迎订阅与关注!

最后,特别感谢每一位认真、耐心、持续关注博主的盆友,每一次点赞/收藏都代表了对知识的渴望。希望你们能够看得懂,学得会。


系列回顾

微服务实战系列之玩转Docker(八)
微服务实战系列之玩转Docker(七)
微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生

在这里插入图片描述


http://www.ppmy.cn/server/98928.html

相关文章

datawind可视化查询-字符串函数

飞书文档学习链接:https://www.volcengine.com/docs/4726/47275 1 常用函数快速入门 字符串函数用于对文本作拼接或截取。 1.1 字符串拼接 格式:concat(xxx,xxx,xxx……),将多个字段,不带分隔符地拼接在一起 示例:concat(字段A,字段B,字段C)得到:门前大桥下,123 字…

如何在 Linux 系统上更改 SSH 服务端口以增强服务器安全性

SSH 服务器默认使用 22 端口,这使得攻击者可以轻松识别并尝试攻击 SSH 服务。为了增加服务器的安全性,建议更改默认的 SSH 端口。本文将详细介绍如何在 Linux 系统上更改 SSH 服务端口,并包含一些最佳实践和注意事项。 1. 检查新的 SSH 端口…

面试题:Java 集合类的遍历方式,如何一边遍历 一边删除?

问题一:你用过 Java 中的哪些集合类? ArrayList, LinkedList, HashMap, HashSet, TreeSet, Stack, Queue, PriorityQueue等 问题二:集合中遍历元素的方式? Collection 接口实现子类 1. List 集合 // list 集合public static …

大数据项目——广告数仓之HTTP概述

目录 第一章、理解URL 1.1 客户端、服务器 1.1.1 服务器与服务 1.1.2 客户端 1.2 URL 1.3 查询参数 第一章、理解URL 1.1 客户端、服务器 1.1.1 服务器与服务 所谓服务器,其实就是一台24小时不关机的计算机,它也有自己的cpu、内存、网卡、…

【MongoDB 】MongoDB 介绍及应用,设计到4个案例

MongoDB 介绍概述 基础概念 MongoDB 是非关系型数据库,也就是nosql,存储json数据格式会非常灵活,要比数据库mysql/MariaDB更好,同时也能为mysql/MariaDB分摊一部分的流量压力。 对于经常读写的数据他会存入内存,如此…

深入理解 AWS CodePipeline

AWS CodePipeline 是一种持续交付和持续集成(CI/CD)服务,用于自动化软件发布过程。它通过创建流水线来帮助你自动构建、测试和部署应用程序。以下是对 AWS CodePipeline 的深入理解,包括其工作原理、组件、功能和使用场景: 1. AWS CodePipeline 的基本概念 持续集成和持续…

七夕表白网页效果实现与解析

七夕是中国传统的情人节,是一个充满浪漫与爱的节日。在这个特别的日子里,用代码来表达心意也是一种独特且有趣的方式。本篇文章将带你一步步实现一个简单但充满心意的七夕表白网页。通过使用HTML、CSS和少量的JavaScript,我们将创建一个包含跳…

Java中的抽象类与接口

1. 抽象类 1.1 抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 比如&…