从传统变为docker需要从开发到测试运维都要会使用docker
容器的本质就是进程。容器镜像就是这个系统里的".exe"安装包。
Kubernetes 就是操作系统!
Docker部署模式:复制->运行

容器和虚拟机区别:
1. 容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。
2. 虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。
3. 容器使用宿主操作系统的内核,而虚拟机使用独立的内核
4. 容器只是一个进程,而虚拟机不是

Docker对服务器端开发/部署带来的变化:
Docker支持将应用打包进一个可以移植的容器中,新定义了应用开发,测试,部署上线的过程,核心
理念就是 Build once, Run anywhere
标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
Docker是软件工程领域的"标准化"交付组件,最恰到好处的类比是"集装箱"。
传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化
组件。
Docker的标准化交付物称为"镜像",它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的
模式。

一次构建,多次交付
类似于集装箱的"一次装箱,多次运输",Docker镜像可以做到"一次构建,多次交付"。当涉及到应用程序多副本
部署或者应用程序迁移时,更能体现Docker的价值。

应用隔离
集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应
用程序之间的相互影响,但是比虚拟机开销更小。

Docker的度量
隔离性
 Docker采用libcontainer作为默认容器,代替了以前的LXC。libcontainer的隔离性主要是通过内核的命名空
间来实现的,有pid、net、ipc、mnt、uts命令空间,将容器的进程、网络、消息、文件系统和主机名
进行隔离。
可度量性
 Docker主要通过cgroups控制组来控制资源的度量和分配。
移植性
 Docker利用AUFS来实现对容器的快速更新。
 AUFS是?一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。
AUFS具有层的概念,每一次修改都是在已有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。
安全性
安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。
容器内部之间的安全性主要是通过命名空间和cgroups来保证的。
容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。

Docker容器使用AUFS作为文件系统,有如下优势
1)节省存储空间
多个容器可以共享同一个基础镜像存储。
2)快速部署
如果部署多个来自同一个基础镜像的容器时,可以避免多次复制操作。
3)升级方便
升级一个基础镜像即可影响到所有基于它的容器。
4)增量修改
可以在不改变基础镜像的同时修改其目录的文件,所有的更高都发生在最上层的写操作层,增加了基础
镜像的可共享内容。

Docker系统有两个程序:Docker服务端和Docker客户端
Docker服务端:
 是一个服务进程,管理着所有的容器。
Docker客户端:
 扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。

Docker核心组件
 Docker 镜像 - Docker images
 Docker 仓库 - Docker registeries
 Docker 容器 - Docker containers

容器组成要素
 名称空间 namespace
 资源限制 cgroups
 文件系统 overlay2(UnionFS)

Docker 仓库
用来保存镜像,可以理解为代码控制中的代码仓库。同样的,Docker 仓库也有公有和私有的概念。
公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。
这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部分。

Docker 镜像
Docker 镜像是 Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。
在 Docker 的术语里,一个只读层被称为镜像,一个镜像是永久不会变的。
所有镜像都是通过一个 64 位十六进制字符串 (内部是一个 256 bit 的值)来标识的。

Docker 容器
Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运用所需要的环境。每一个
Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运?、开始、停?、移动和删除。每一个
Docker 容器都是独?和安全的应?平台,Docker 容器是 Docker 的运?部分

名字空间
名字空间是 Linux 内核?个强?的特性。每个容器都有??单独的名字空间,运?在其中的应?都像是
在独?的操作系统中运??样。名字空间保证了容器之间彼此互不影响。