参考:https://blog.csdn.net/huwh_/article/details/75935700
https://blog.51cto.com/ityouknow/2092774
paas平台:
paas平台就是为客户提供一个环境,保证开发,测试,运维人员都可以处理相同的程序,即使自己的计算机环境不同。
paas平台技术栈:
功能组成部分 | 使用工具 |
---|---|
应用载体 | Docker |
编排工具 | Kubernetes |
配置管理 | Etcd |
网络管理 | Flannel |
存储管理 | Ceph |
底层实现 | Linux内核的Namespace[资源隔离]和CGroups[资源控制] |
Namespace资源隔离:是一种资源隔离方案,PID、IPC、network不再是全局的,而是属于某个特定的namespace,每个namespace之间是隔离的不可见的。
Cgroups资源控制:可以将进程进行分组化管理的Linux功能。可以限制、记录和隔离进程组做使用的物理资源。
docker:
docker把应用以及应用所依赖的环境打包成一个包,这个包也就是镜像可以再任何地方原生运行,保证开发测试运维的一致性。
docker本质是:docker = lxc(namespace+Cgroups)+docker images,即在Linux内核里namespace和Cgroups技术的基础上,通过镜像管理机制实现轻量化设计。
基本概念
1.镜像:例如一个镜像可以是一个Ubuntu操作环境,只不过打包好了,里面搭建好了基本的开发环境,镜像可以用来创建docker容器,用户可以从其他人那里下载镜像直接使用。
2.容器
容器可以看做是一个正在运行的系统实例(这个实例是从镜像创建的),容器之间是相互隔离的。
3.仓库
用来存放不同的镜像,供用户下载使用。而仓库注册服务器上存放多个仓库,每个仓库存放了多个镜像。
docker的优势
VM是通过硬件资源分配,创建多个系统OS,然后实现隔离。
而docker是在docker引擎的基础上的基础上,安装应用。
从这里看出,VM是在一个系统里运行多个臃肿的操作系统,再在不同系统运行不同的应用,是先将资源分配各不同的系统;而docker是采用容器,在不同容器创建不同的系统镜像文件,集成到docker中,运行多个相互隔离的应用,是动态分配资源。
docker engine包括:
Docker Daemon — docker 的守护进程,属于C/S中的server
Docker REST API — docker daemon向外暴露的REST 接口
Docker CLI — docker向外暴露的命令行接口(Command Line API)
docker客户端,向docker daemon守护进程发送请求建立不同的容器,dockerdaemon向registries仓库注册服务器申请相应的镜像
docker machine:
docker machine是一个工具,负责在多种平台上快速安装docker环境,并使用docker-machine命令管理这些宿主机。
Docker Machine 使你能够在各种 Linux 上配置多个远程 Docker 宿主机。
主要有两个应用:
1.主系统是一个旧的操作系统,不符合新的docker的要求,无法安装docker,则需要安装docker machine为docker配置一个本地的虚拟机,使你可以连接它,并运行docker命令。
2.远程配置docker宿主机,通过docker machine配置管理多个docker宿主机。
Docker Engine 和 Docker Machine 有什么区别?
当人们说“Docker”时,他们通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker 守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。
Docker Machine 是一个用于配置和管理你的宿主机(上面具有 Docker Engine 的主机)的工具。通常,你在你的本地系统上安装 Docker Machine。Docker Machine有自己的命令行客户端 docker-machine 和 Docker Engine 客户端 docker。你可以使用 Machine 在一个或多个虚拟系统上安装 Docker Engine。
这些虚拟系统可以是本地的(就像你在 Mac 或 Windows 上使用 Machine 在 VirtualBox 中安装和运行 Docker Engine 一样)或远程的(就像你使用 Machine 在云提供商上 provision Dockerized 宿主机一样)。Dockerized 宿主机本身可以认为是,且有时就称为,被管理的“machines”。