1.关于容器(Container)
主机为应用程序提供的完整的、隔离的用户空间环境。某个容器内部的变动,不会影响其他容器。
容器技术利用 Linux Namespace、cgroups 等完成容器的隔离与资源限制。
同时,容器之间共享同一个操作系统内核。
2. 容器与虚拟化
相比容器技术,系统级虚拟化在隔离性方面更加成熟。它为用户提供了一个包括虚拟硬件(CPU/内存/IO 设备等)、操作系统在内的完整环境。
而容器在启动销毁速度、资源消耗、弹性伸缩等方面表现得极为高效;但在隔离性与安全性方面,仍有很长的路要走。
3.关于 Docker
它提供了简易的容器运行控制方法,便捷的镜像存储分发机制,以及高速发展的集群化方案。
Docker 的出现大大降低了应用部署的难度,严格保证了线上环境的一致性。
Docker Daemon 是运行在主机上的 Docker 服务守护进程。它作为 Docker 的 Server 端存在,实现了容器/镜像相关的 API。
想要启动 Docker 容器,必须先启动 Docker Daemon。在我们的内部支持版本中,Docker 服务在 CentOS 7 上由 systemd 管理。
Docker Client 封装了访问 Docker Daemon API 的方法,并通过 socket(s) 与(同主机或不同主机的) Docker Daemon 通信。
Docker 安装包集成了 Docker Daemon (dockerd
) 和 Docker Client (docker
)。
Docker Image,即 Docker 镜像,类似不包含运行状态的容器快照。镜像内容包括应用程序及其依赖、环境变量、入口进程、端口信息等。
镜像为层级叠加结构(layers),并采用 Copy-on-Write 机制以节省空间。一个完整的镜像由一层或多层组成。
LayerID 是一个唯一的 64 位哈希值,每层包含自身内容和它依赖的下一层的 layerID。
Docker Registry Docker 的镜像存储、分发中心。
Docker 心仪的应用类型:高可用,可伸缩,无状态。
实际上,所有的应用都可以用 Docker 运行。即便无法利用其与集群结合得到的弹性伸缩这个优秀特性,Docker 依旧可以在单机环境下发挥它的其他优势:只需一次封装,即可永久保证环境的一致性