【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)
书名:Docker+Kubernetes应用开发与快速上云
作者:李文强
出版社:机械工业出版社
出版时间:2020-01
ISBN:9787111643012
[山外笔记-云原生]《Docker_Kubernetes应用开发与快速上云》读书笔记01.pdf
一、山外笔记-前言
1、云原生下的DevOps的解决方案:以Docker为代表的容器技术作为基础保障、以Kubernetes(简称k8s)为代表的容器编排技术作为支撑的解决方案。
2、云原生的实现:以Docker为代表的容器技术+以K8s为代表的容器编排技术+微服务架构
3、本书内容介绍(共11章)
第01章:主要介绍Docker以及容器技术的发展简史。
第02章:主要介绍Docker的市场趋势和主要应用场景。
第03章:主要讲解各个环境下的Docker安装过程。
第04章:主要结合实践示例讲解Docker的一些镜像操作命令和容器操作命令。
第05章:主要围绕Docker应用开发的持续工作流程进行讲解。
第06章:主要讲解如何使用主流的编程语言进行Docker应用开发。
第07章:主要讲述主流的数据库容器化并且侧重讲解容器化之后如何持久保存数据。
第08章:主要讲述Kubernetes的主体架构、核心概念、集群搭建和故障处理。
第09章:主要讲述k8s应用部署流程及相关功能。
第10章:主要讲述Docker+k8s的组合上云的问题。
第11章,主要讲述容器化之后的DevOps实践。
二、山外笔记-第1章:走进Docker
本章主要包含以下内容:
Docker技术概述;
容器技术的发展历史;
Docker和虚拟机的区别;
Docker的三个基本概念(为后续进一步讲解Docker做铺垫);
Docker的两个版本。
2.1 什么是Docker
1、Docker是一个开源的应用容器引擎,可以轻松地为任何应用创建一个轻量级、可移植、自给自足的容器。
2、Docker平台就是一个软件集装箱化平台,可以构建应用程序,将其依赖关系一起打包到一个容器中,然后可以批量地部署到不同的环境,非常易于装载、复制、移除,适合弹性软件架构。
3、软件容器充当软件部署的标准单元,可以包含不同的代码和依赖项。
4、和虚拟机一样,容器技术也是一种资源隔离的虚拟化技术。
2.2 容器简史
1、UNIX chroot(1979):起始阶段
容器概念始于UNIX chroot,chroot将一个进程及其子进程的根目录改变到文件系统中的一个新位置,使该进程只能访问到新的位置,从而达到进程隔离的目的。
2、Cgroups(2007):Control Groups
谷歌实现了Control Groups(Cgroups),而后被加入到Linux内核中,能够限制和隔离一系列进程的资源使用(CPU、内存、磁盘I/O、网络等),为后期容器的资源配额提供了技术保障。
3、LXC(2008):Linux Containers
2008年基于Cgroups和Linux Namespaces推出了第一个最为完善的Linux容器LXC,其功能通过Cgroups和Linux Namespaces实现,是第一套完整的Linux容器管理实现方案。
4、Docker(2013)推出
(1)Docker的理念是“一次构建,随处运行”。
(2)Docker在起步阶段使用LXC,而后利用自己的libcontainer库将其替换下来。
(3)Docker引入了一整套与容器管理相关的生态系统,包括一套高效的分层式容器镜像模型、一套全局及本地容器注册表、一个精简化REST API以及一套命令行界面等。
5、Rocket(2014)推出
(1)2014年CoreOS推出了一个类似于Docker的容器Rocket。
(2)CoreOS是一个更加轻量级的Linux操作系统,Rocket在安全性上比Docker更严格。
6、Docker支持Windows系统
2016年微软在Windows上提供了对容器的支持,Docker可以以原生方式运行在Windows上,而不需要使用Linux虚拟机。
2.3 Docker和虚拟机
1、Docker容器
(1)容器是一个应用层抽象,用于将代码和依赖资源打包在一起。
(2)多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行。
(3)与虚拟机相比,容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动。
2、虚拟机VM
(1)虚拟机(VM)是一个物理硬件层抽象,用于将一台服务器变成多台服务器。
(2)管理程序允许多个VM在一台机器上运行。
(3)每个VM都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源。
(4)虚拟机占用大量空间,启动也十分缓慢。
3、容器和虚拟机的比较
(1)启动速度:容器的启动速度是秒级,即几秒内即可启动;虚拟机的启动速度需要几分钟到十几分钟。
(2)存储空间占用:容器基本镜像的大小在几百MB以内;虚拟机的镜像大小在几十GB到上百GB。
(3)性能:容器的性能接近原生,基本无额外消耗;虚拟机的性能弱于原生,且占用较多的资源。
(4)系统支持量:一台普通的服务器可以轻松支持上千个容器,但最多只能支持几十个虚拟机。
(5)安全隔离性:容器的安全隔离性明显弱于虚拟机。
4、镜像的主要目标是使环境(依赖项)在不同的部署中保持不变。即借助容器镜像,可打包应用或服务并采用可靠且可重现的方式对其进行部署。
2.4 Docker的三个基本概念
1、镜像(Image):一个特殊的文件系统
(1)操作系统分为内核和用户空间,Linux内核启动后,会挂载root文件系统为其提供用户空间支持。
Docker镜像是一个特殊的root文件系统,提供了容器运行时所需的程序、库、资源、配置等文件,和为运行时准备的配置参数(如匿名卷、环境变量、用户等)。
(2)镜像不包含任何动态数据,其内容在构建之后也不会被改变,可以使用docker image ls
命令来列出本机的镜像。
(3)Docker利用Union FS的技术,设计为分层存储的架构。
镜像实际是由多层文件系统联合组成的。
镜像构建时会一层层构建,前一层是后一层的基础。
每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。
每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。
分层存储使镜像的复用、定制更为容易,可用已构建好的镜像作为基础层,再添加新的层来定制自己所需的镜像。
2、容器(Container):镜像运行时的实体
(1)镜像和容器的关系就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
(2)容器可以被创建、启动、停止、删除、暂停等,可以使用命令docker ps
来查看正在运行的容器列表。
(3)容器的实质是进程,容器进程运行于属于自己的独立的命名空间中。
(4)容器和镜像一样,也是分层存储。
容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。
任何保存于容器存储层的信息都会随容器删除而丢失。
容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。
容器所有文件的写入操作,直接跳过容器存储层,直接对数据卷(Volume)或者绑定宿主目录发生读写。
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡,数据也不会丢失。
(5)容器的优点:隔离性、可移植性、灵活性、可伸缩性和可控性,最重要的优点是可在开发和运营之间提供隔离。
3、仓库(Repository):集中存放镜像文件的地方
(1)镜像仓库是Docker用来集中存放镜像文件的地方,提供集中的存储、分发镜像服务,类似于常用的代码仓库。
一个Docker Registry中可以包含多个仓库,每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。
一个仓库通常会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。
镜像仓库通过“<仓库名>:<标签>”的格式来指定镜像的版本,如果不给出标签,就以latest作为默认标签。
(2)Docker Registry
Docker Registry公开服务是开放给用户使用、允许用户管理镜像的Registry服务。
Docker Registry公开服务允许用户免费上传、下载公开的镜像,并可能提供收费服务供用户管理私有镜像。
用户可在本地搭建私有Docker Registry,Docker官方提供了Docker Registry镜像,可以直接作为私有Registry服务。
(3)Docker Hub
Docker Hub是Docker官方维护的一个镜像仓库,也是最常使用的Registry公开服务、默认的Registry服务。
Docker Hub拥有大量的高质量的官方镜像,网址为https://hub.docker.com/。
可以在Docker Hub上面免费托管自己的私人镜像。
2.5 Docker的版本
1、社区版(Docker Community Edition, CE),适合个人开发者和小型团队,可以免费使用。
2、企业版(Docker Enterprise Edition, EE),专为企业开发和IT团队设计,需要购买,强调安全。
版权声明:本文是对《Docker_Kubernetes应用开发与快速上云》一书的个人学习笔记,只做学习和交流使用,不涉及商业用途,版权归原作者所有。如果本文发布的内容侵犯到相关的权益,请及时联系本人进行删除!
【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)的更多相关文章
- SaaS launch Kit成回收宝和友盟云合作纽带,帮助提升3倍上云效率
导语:叶飞表示,全球二手手机市场未来几年将发生巨大变革, 回收宝正进行积极布局.与阿里云开展紧密技术合作,回收宝期待成为这一变革的引领者. 7月26日,在阿里云上海峰会上,阿里云了发布SaaS生态战略 ...
- 拥抱云原生 2.0 时代,Tapdata 入选阿里云首期云原生加速器!
3月9日,阿里云首期云原生加速器官宣,Tapdata 突出重围,成功入选31 强,将与多家行业知名企业,携手阿里云共建云原生行业新生态,加速拥抱云原生新时代的无限潜能. 2021年,阿里云正式 ...
- Mysql实战45讲 04讲深入浅出索引(上)读书笔记 极客时间
极客时间 Mysql实战45讲 04讲深入浅出索引 极客时间(上)读书笔记 笔记体悟 1.索引的作用:提高数据查询效率2.常见索引模型:哈希表.有序数组.搜索树3.哈希表:键 - 值(key - v ...
- 《编写高质量代码--Web前端开发修炼之道》读书笔记
前言 这两周参加公司的新项目,采用封闭式开发(项目成员在会议室里开发),晚上加班到很晚,所以没时间和精力写原创博客了,今天就分享下这篇<编写高质量代码--Web前端开发修炼之道>读书笔记吧 ...
- 云原生应用 Kubernetes 监控与弹性实践
前言 云原生应用的设计理念已经被越来越多的开发者接受与认可,而Kubernetes做为云原生的标准接口实现,已经成为了整个stack的中心,云服务的能力可以通过Cloud Provider.CRD C ...
- 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式
前言 k8s云原生搭建,步骤有点多,但通过kubesphere,可以快速搭建k8s环境,同时有一个以 Kubernetes 为内核的云原生分布式操作系统-kubesphere,本文将从零开始进行kub ...
- .NET 云原生架构师训练营(建立系统观)--学习笔记
目录 目标 ASP .NET Core 什么是系统 什么是系统思维 系统分解 什么是复杂系统 作业 目标 通过整体定义去认识系统 通过分解去简化对系统的认识 ASP .NET Core ASP .NE ...
- .NET 在云原生时代的蜕变,让我在云时代脱颖而出
.NET 生态系统是一个不断变化的生态圈,我相信它正在朝着一个伟大的方向发展.有了开源和跨平台这两个关键优先事项,我们就可以放心了.云原生对应用运行时的不同需求,说明一个.NET Core 在云原生时 ...
- 【转】.NET 在云原生时代的蜕变,让我在云时代脱颖而出
原创:张善友 原文:https://www.cnblogs.com/shanyou/p/12198741.html .NET 生态系统是一个不断变化的生态圈,我相信它正在朝着一个伟大的方向发展.有了开 ...
随机推荐
- C++ 简单信息的表示和基本运算
一.算术运算和自增自减运算 二.关系运算 三.逻辑运算 四.位运算 五.特殊运算符 六.混合运算中的类型转换
- linux压缩及归档
一.解析 压缩:把大文件,通过压缩成一个比之前小的文件. 归档(打包):把多个文件,归档成一个文件. 二.压缩 1.zip(归档压缩,可以压缩目录,要保存源文件) 压缩:zip 压缩后的文件名 压缩 ...
- 用全站 CDN 部署 Discourse 论坛
Discourse 介绍 Discourse 是一款由 Stack Overflow 的联合创始人--Jeff Atwood,基于 Ruby on Rails 开发的开源论坛.相较于传统论坛,Disc ...
- NKOJ3775 数列操作
问题描述 给定一个长度为n的序列,你有一次机会选中一段连续的长度不超过d的区间,将里面所有数字全部修改为0.请找到最长的一段连续区间,使得该区间内所有数字之和不超过p. 输入格式 第一行包含三个整数n ...
- canvas 悬浮效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 1044 Shopping in Mars (25分)(二分查找)
Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diam ...
- 1035 Password (20分)(水)
To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem ...
- Java学习笔记--Arrays
Arrays(数组工具类)常用方法 Arrays.toString(int[] a)方法 -------> 返回类型为String,可以用来产生数组的可打印表示,避免了用循环依次读取数组值进 ...
- Socket探索1-两种Socket服务端实现
介绍 一次简单的Socket探索之旅,分别对Socket服务端的两种方式进行了测试和解析. CommonSocket 代码实现 实现一个简单的Socket服务,基本功能就是接收消息然后加上结束消息时间 ...
- Thinkphp6源码分析之解析,Thinkphp6路由,Thinkphp6路由源码解析,Thinkphp6请求流程解析,Thinkphp6源码
Thinkphp6源码解析之分析 路由篇-请求流程 0x00 前言: 第一次写这么长的博客,所以可能排版啊,分析啊,什么的可能会比较乱.但是我大致的流程已经觉得是说的够清楚了.几乎是每行源码上都有注释 ...