【山外笔记-云原生】《Docker+Kubernetes应用开发

2020-04-25  本文已影响0人  山外Sundal

书名:Docker+Kubernetes应用开发与快速上云

作者:李文强

出版社:机械工业出版社

出版时间:2020-01

ISBN:9787111643012


[山外笔记-云原生]《Docker_Kubernetes应用开发与快速上云》读书笔记01.pdf

一、山外笔记-前言

1、云原生下的DevOps的解决方案:以Docker为代表的容器技术作为基础保障、以Kubernetes(简称k8s)为代表的容器编排技术作为支撑的解决方案。

2、云原生的实现:以Docker为代表的容器技术+以K8s为代表的容器编排技术+微服务架构

3、本书内容介绍(共11章)


二、山外笔记-第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)容器和镜像一样,也是分层存储。

(5)容器的优点:隔离性、可移植性、灵活性、可伸缩性和可控性,最重要的优点是可在开发和运营之间提供隔离。

3、仓库(Repository):集中存放镜像文件的地方
(1)镜像仓库是Docker用来集中存放镜像文件的地方,提供集中的存储、分发镜像服务,类似于常用的代码仓库。

(2)Docker Registry

(3)Docker Hub

2.5 Docker的版本

1、社区版(Docker Community Edition, CE),适合个人开发者和小型团队,可以免费使用。

2、企业版(Docker Enterprise Edition, EE),专为企业开发和IT团队设计,需要购买,强调安全。

版权声明:本文是对《Docker_Kubernetes应用开发与快速上云》一书的个人学习笔记,只做学习和交流使用,不涉及商业用途,版权归原作者所有。如果本文发布的内容侵犯到相关的权益,请及时联系本人进行删除!

上一篇下一篇

猜你喜欢

热点阅读