本节书摘来自异步社区《第一本docker书(修订版)》一书中的第1章,第1.5节,作者:【澳】james turnbull(詹姆斯•特恩布尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
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。