Docker简介:
- Docker:
- Docker是一个运行自己应用程序的封套,他最初使用的是go语言,就相当于是加在LXC上的管道,允许开发者在更高层次的概念上工作.
- Docker也是一个云计算平台,他利用Linux的LXC、AUFU、Go语言、cgroup实现了自愿的独立,可以轻松的实现文件资源网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离
- Docker会像一个可移植容器引擎那样工作,它可以将应用程序以及所有程序的依赖环境打包到一个虚拟容器中,这个虚拟容器可以运行在任何一种Linux服务器上,这大大提高了程序运行的灵活性和可移植性,无论需不需要许可、是公共云还是私有云,是不是裸机环境等等。
- Docker就是一个云虚拟化
Docker与虚拟机相比:
传统虚拟机 | Docker |
---|---|
依赖物理CPU和内存硬件级别,现在来讲要求比较高 | 在操作系统上,利用操作系统的containerization(集装箱化)技术,可以在虚拟机上运行 |
— | — |
一般都是指操作系统镜像,比较复杂 | docker开源而且轻量,称为容器,单个容器适合不熟少量应用 |
— | — |
使用系统欧诺个的快照来保证 | 引入了类似源代码管理机制,将容器的快照历史版本一一记录 |
— | — |
在构建系统的时候较为复杂,需要大量的人力 | docker可以通过DockerFile来构建整个容器,重启和构建速度很快,更重要的是Dockerfile可以手动编写,这样应用程序开发人员可以通过发布Dockerfile来指导系统环境和依赖,这样对于持续交付十分有利 |
Docker特性:
- 文件系统隔离: 每个进程容器运行在完全独立的根文件系统
- 资源隔离:可以使用cgrop为每个进程容器分配不同的系统资源,例如CPU和内存
- 网络隔离: 每个进程容器运行在自己的网络命名空间中,拥有自己的虚拟接口和IP地址
- 写时复制:采用写时复制方式创建根文件系统,让部署变得快捷并且节省内存和硬盘空间
- 日志记录:Docker将会收集和记录灭个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索
- 变更管理:容器文件系统的变更可以提交到新的映像中,并可以重复使用以创建更多的容器,无需使用模板或者手动配置
- 交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell
- Docker工作原理:
- Docker使用C/S架构模式,Docker客户端会与Docker守护进程进行通信,Docker守护进程会处理一些复杂繁重的任务,例如建立,运行,发布Docker容器,Docker客户端和守护进程可以运行在同一个系统,也可以连接一个远程的守护进程,Docker客户端和守护进程之间通过socket或者RESTful API进行通信。
- Docker内部组件:
- Docker镜像:Docker容器运行的只读模板
- Docker仓库:Docker参股就是用来存放镜像的,也有共有和私有的概念
- Docker容器:和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需亚奥的环境,每一个Docker容器都是从 Docker镜像创建的,Docker容器可以运行、开始、停止、移动和删除。每一个Docker容器都是独立和安全的应用平台,Docker 容器是Docker的运行部分