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

发布于:2025-04-09 ⋅ 阅读:(34) ⋅ 点赞:(0)

关于系统的改造探索

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

第一部分——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时候的体验和理解,如果存在问题,欢迎大家指出