第一部分——Docker篇 第一章 Docker容器

关于系统的改造探索

开篇:系统改造的调研报告

第一部分------Docker篇

第一章 Docker容器
第二章 Docker安装
第三章 构建自定义镜像
第四章 搭建镜像仓库
第五章 容器编排
第六章 容器监控


文章目录


前言

随着业务的发展,传统的架构已经不符合项目的要求了。双活、集群也渐渐提上了日程。。。


一、就是你了------Docker

在使用之前,先了解下什么是容器 。相信作为开发,大部分人都使用VmwareVirtualBox 之类的虚拟机 软件装过Linux 系统,简单来说,容器 可以理解成一个mini版的虚拟机 。那为什么不直接用虚拟机 而是选用容器 呢?主要还是因为虚拟机 太重了,虚拟机 拥有操作系统完整的功能,但运行一个系统,不需要那么多的东西。像平时用虚拟机 装个Linux 系统,动辄4C4G起步,装的软件一多还得继续往上砸硬件,显然这成本就太高了。容器 就是基于这种情况下出现的,之所以轻量级,是除了软件必虚的环境之外,不安装多余的东西。之所以可移植,是容器 屏蔽了环境之间的差异,如果说是java 是一次编译,四处运行。那么容器就是一次打包,四处部署(相对而言)。计算机的世界,果然没有什么是加一层不能解决的,如果有,那就再加一层

了解完容器化 ,接下来就要挑选下用哪种容器化技术了。现在市面上的容器化 的技术有很多了,如:Containerd、 CRI-O、Docker 等。基于文档以及适用性的考虑,这里就选用Docker作为容器化工具

注:实际上容器并不是一个mini版的虚拟机,而是更加轻量级和灵活的解决方案。这里只是为了方便理解,容器共享宿主操作系统的内核,因此不需要额外的操作系统内核和资源。与此相比,虚拟机需要独立的操作系统和资源,因此更加笨重。容器并没有实现真正意义上的跨平台,还是依赖于操作系统,在部署的过程中,发现Linux打包的镜像无法再Windows部署,不过细想下:容器打包的镜像包含操作系统,Linux下打包的镜像,自然无法导入Windows。貌似也没毛病


二、Docker概览

一说到Docker ,想必大家脑海里都会浮现一只鲸鱼驮着一堆集装箱的图片,鲸鱼驮着一堆集装箱游走在各个海域。事实也是如此,鲸鱼就是Docker ,而集装箱,则是我们在Docker上打包安装的软件,海域则是不同的环境

了解完Docker ,接下来再来看下Docker 的架构,看下Docker具体怎么执行的。下边是官方给出的流程图,如下:

可以看出,Docker 主要分为:客户端、守护进程、仓库、镜像 这几部分。下边就一一来看下这几个某块分别的作用

守护进程(Docker daemon)

守护进程Docker 最核心的部分。负责处理客户端请求,监控容器运行状态、处理容器生命周期,管理资源,如:镜像、容器、网络都是由守护进程在管理,

客户端(Docker client)

客户端 就比较简单了,像平时敲得命令:docker、docker-compose 都属于客户端客户端 负责向守护进程发起请求

镜像(Images)、容器(Containers)

镜像(Images)、容器(Containers)、网络(networks)、卷(volumes)都属于docker 对象的一部分,这里主要说说下镜像和容器

镜像容器 的关系有点类似于对象 的关系,镜像 是类(class)提供只读模板,容器 是基于镜像 创建的实例(instance),镜像 提供了容器 运行所需的文件系统和配置信息,而容器 则是镜像的一个具体实例,包含了运行时的状态和数据

仓库(Docker registries)

仓库 就比较好理解了,现在一般会部署集群,这时候如果没有仓库 ,就需要把各个镜像 上传到对应的服务器再进行安装,这显然不符合快速部署的要求,而且也存在版本管理和权限等问题。所以,一般会把镜像 发布在仓库 上,Docker自己去下载即可

那么这几个组件之间是如何配合工作的呢?以docker run 命令为例,大体流程:客户端 发起请求,守护进程 先查看本地是否存在镜像,不存在则去仓库 下载,而后创建出容器
访问 存在 不存在 下载 开始 docker daemon 本地存在? 本地 仓库 结束


总结

这篇先简单了解下Docker 和容器化技术,后边开始真正的使用。当然,上边都是个人在使用Docker时候的体验和理解,如果存在问题,欢迎大家指出

相关推荐
rocksun24 分钟前
为何云原生基础设施对于GenAI而言不可或缺
人工智能·云原生
牛马大师兄1 小时前
Shell脚本编程之正则表达式
linux·运维·服务器·开发语言·ssh·bash·shell
qq_260241231 小时前
低配置云服务器网站的高效防御攻略
运维·服务器
曼岛_1 小时前
CentOS 7 强制升级Docker 24.x终极指南(解决MySQL8镜像兼容性问题)
linux·docker·centos
xiao智1 小时前
剖析 Docker Swarm 操作对容器端口影响
docker
努力努力再努力wz2 小时前
【c++深入系列】:类和对象详解(下)
java·运维·c语言·开发语言·c++
a123_z2 小时前
.NET 创建MCP使用大模型对话二:调用远程MCP服务
运维·服务器
葟雪儿2 小时前
Docker常用命令
linux·服务器·spring cloud·docker·微服务·容器
木盏2 小时前
Linux终止进程(kill process)的一些玩法
linux·运维·深度学习
Fanche4042 小时前
Linux-CentOS-7—— 安装MySQL 8
linux·运维·数据库·mysql·centos