本节书摘来自异步社区《第一本Docker书(修订版)》一书中的第1章,第1.5节,作者:【澳】James Turnbull(詹姆斯•特恩布尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.5 Docker的技术组件
Docker可以运行于任何安装了现代Linux内核的x64主机上。推荐的内核版本是3.8或者更高。Docker的开销比较低,可以用于服务器、台式机或笔记本。它包括以下几个部分。
一个原生的Linux容器格式,Docker中称为libcontainer。
Linxu内核的命名空间(namespace)[9],用于隔离文件系统、进程和网络。
文件系统隔离:每个容器都有自己的root文件系统。
进程隔离:每个容器都运行在自己的进程环境中。
网络隔离:容器间的虚拟网络接口和IP地址都是分开的。
资源隔离和分组:使用cgroups[10](即control group,Linux的内核特性之一)将CPU和内存之类的资源独立分配给每个Docker容器。
写时复制[11]:文件系统都是通过写时复制创建的,这就意味着文件系统是分层的、快速的,而且占用的磁盘空间更小。
日志:容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并记入日志,用来进行日志分析和故障排错。
交互式shell:用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式的shell。