云原生之路01之Docker和K8S
第一章 云原生开学“第一课”
云原生技术的发展
- 核心构建单元:服务器—虚拟机—Bulidpacks—容器
- 不可变基础设置
- 隔离单元:更轻的体量,更快的启动速度
- 供应商:从闭源单一供应商到开源跨供应商
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
云原生核心理念
- 解耦软件开发,提高灵活性和可维护性
- 多云支持,避免产商锁定
- 避免侵入式定制
- 提高工作效率和资源利用率
云原生发展趋势
- 软硬一体化: 与传统基础设施的网络,存储,计算能力对接,发挥软硬一体化优势
- 服务网格: 以基础设施的方式提供无侵入的连接控制安全,可监测性,灰度发布等质量能力
- 有状态应用: 无状态+Job类应用趋于成熟,有状态应用逐步成为云原生整长点,因Operator的出现,为有状态应用提供一套标准规范
- 跨区域、跨平台、跨云:云原生北向API趋于稳定,关注多云统一管理和业务流量统一调度。
云原生的代表技术
- 容器
- 微服务
- 服务网格: 剥离业务代码和分布式框架,基础设施、非入侵式
- 声明式API(K8S): 面向开发者提供全新分布式原语
云原生技术体系及CNCF核心项目
- 开源社区式云原生技术的推动者,同时是相关技术标准的制定者
- CNCF 已成为云计算领域新的“标准”制定者
第二章 容器技术基础介绍
- Linux 通过Cgroups的资源管理能力和Namespace的隔离能力组合在一起
- Cgroup子系统:blkio、cpu、cpuacct、cpuset、devices、freezer、memory、net_cls
- Namespace:UTS、IPC、PID、Network、Mount、User
- Docker:一个开发、交付和运行应用程序的开放平台,将应用程序和基础架构分开,快速交付
- Docker VS VM:启动快(秒级)、资源少、更轻量、高可用和可恢复性、快速创建删除、快速交付和部署
- Docker常用命令:build、images、load、ps、pull、push、restart、rm、rmi、tag、run
- Docker三大核心组件:镜像(静态、只读)、容器(动态、可读写)和仓库(集装箱)
- Dockerfile构建镜像
Dockerfile构建镜像:
- Dockerfile:
from debian
run apt-get install emacs
run apt-get install apache2
cmd ["/bin/bash"]
- 构建
#(1)构建镜像
docker build -t forecast:v1 .
#(2)推送镜像到swr保存用于下次实验
docker tag forecast:v2 仓库地址/jarvis/forecast:v2
docker push 仓库地址/jarvis/forecast:v2
Docker构建存在问题
- 线性构建,顺序执行
- 普通用户无法执行
- 无法清理敏感数据
新兴的镜像构建工具
- BuildKit、img、Kaniko、Buildah
问题:针对上面Docker构建存在的问题,那几个新兴工具(BuildKit、img、Kaniko、Buildah)有没有解决这些问题
实验:
这些连接可不可以放出来,幻灯片里面是图片不方便