云原生学习笔记(一)
基础设施向云演进的意义
基础设施一致性和可靠性
1、容器镜像
2、自包含
3、可漂移
简单可预测的部署与运维
1、自描述、自运维
2、流程自动化
3、容易水平扩展
4、可快速复制的管控系统与支撑组件
容器与镜像
容器
进程可见、可相互通信
共享同一份文件系统:对已有的数据进行增删改;进程间可能会冲突;物理机资源抢占的问题
资源视图隔离 - namespace
控制资源使用率 - cgroup
独立的文件系统 - chroot
容器,是一个视图隔离、资源可限制、独立文件系统的进程集合
视图隔离 - 如能看见部分进程;独立主机名 等等;
控制资源使用率 - 如2G内存;CPU个数 等等;
镜像
运行容器所需要的所有文件集合 - 容器镜像
Dockerfile - 描述镜像构建步骤
分层
复用
构建步骤所产生出文件系统的变化 - changeset
类似disk snapshot
提高分发效率,减少磁盘压力
如何构建镜像
编写Dockerfile - app:v1
docker build -t app:v1
docker registry - 镜像数据的存储和分发
docker push app:v1
如何运行容器
1、从docker registry下载镜像 - docker build busybos:1.25
2、查看本地镜像列表 - docker images
3、选择相应的镜像并运行 - docker run [-d] --name demo busybody:1.25 top
一次构建,到处运行
容器生命周期
单进程模型
1、init进程生命周期 = 容器生命周期
2、运行期间可运行 exec 执行运维操作
数据持久化
1、独立于容器的生命周期
2、数据卷 - docker volume vs bind
-v 挂载容器内路径到本地目录【有一定的运维成本】
容器项目的架构
moby容器引擎架构
containerd
1、容器运行时管理引擎,独立于 moby daemon
2、containerd-shim 管理容器生命周期,可被containerd动态接管
容器运行时
1、容器虚拟化技术方案
2、runC kata gVisor