宽为限 紧用功 功夫到 滞塞通
简介
Docker 组件
核心组件:
Docker 客户端和服务器(引擎)
Docker 是一个客户端/服务器(C/S)架构程序。客户端只需向服务器或守护进程发出请求,服务器返回结果。Docker守护进程也称为Docker引擎。Docker 提供了一个命令行工具docker以及一整套RESTful API 来与守护进程进行交互。用户可以在同一宿主机上运行守护进程和客户端,也可以本地的Docker客户端连接远端的Docker守护进程。
Docker 镜像
镜像是构建Docker 世界的基石。
Registry
Docker 用 Registry 来保存用户构建的镜像。Registry 分两种,公共和私有。
Docker 容器
Docker 可以帮用户构建和部署容器,用户只需要把自己的应用程序或服务打包放进容器即可。容器是基于镜像启动起来的,容器中可运行一个或多个进程。
总结起来, Docker 容器就是:
- 一个镜像格式
- 一系列标准的操作
- 一个执行环境
Docker 能做什么
- 加速本地开发和构建流程,使其更加高效、更加轻量化。
- 能够让独立服务或应用程序在不同的环境中,得到相同的运行效果。这一点在面向服务的架构和重度依赖微型服务的部署中尤其实用。
- 可以创建隔离的测试环境。
- 构建一个多用户的平台即服务(PaaS)基础。
- 为开发、测试提供一个轻量级的沙盒环境,或者用于教学。
- 提供软件即服务(SaaS)应用程序。
- 高性能、超大规模的宿主机部署。
Docker 的技术组件
- 一个原生的Linux容器格式,Docker 中称为 libcontainer。
- Linux 内核的命名空间(namespace),用于隔离文件系统、进程和网络。
- 文件系统隔离:每个容器都有自己的root文件系统。
- 进程隔离:每个容器都运行在自己的进程环境中。
- 网络隔离:容器间的虚拟网络接口和IP地址都是分开的。
- 资源隔离和分组:使用cgroups(即control gtoup,Linux 的内核特性之一)将CPU和内存之类的资源独立分配给每个 Docker容器。
- 写时复制:文件系统都是通过写时复制创建的,这就意味着文件系统是分层的、快熟的,而且占用的磁盘空间更小。
- 日志:容器产生的STDOUT、DTDERR和STDIN这些IO流都会被收集并记入日志,用来进行日志分析和故障排错。
- 交互式shell:用户可以创建一个伪tty终端,将其连接到STDIN,为荣其提供一个交互式的shell。
站在巨人的肩膀上
本篇博文参考的书籍
《第一本Docker书》第一章:简介