docker不能对“硬盘I/O读写”进行隔离,但可以对文件系统、网络(Network)、进程间的通信、针对权限的用户和用户组、进程内的PID和宿主机的PID、主机名与域名等进行隔离。
本教程操作环境:linux5.9.8系统、docker-1.13.1版、Dell G3电脑。
Docker可以控制很多资源,目前还不能对“硬盘I/O读写”资源进行隔离。
硬盘I/O是指硬盘的输入和输出(Input和Output的缩写)。就是发指令,从磁盘读取某段扇区的内容。指令一般是通知磁盘开始扇区位置,然后给出需要从这个初始扇区往后读取的连续扇区个数,同时给出动作是读,还是写。
对于磁盘I/O资源来说,考量的参数是容量和读写速度,因此对容器的磁盘限制也应该从这两个维度出发。目前Docker 支持对磁盘的读写速度进行限制,但是并没有方法能限制容器能使用的磁盘容量(一旦磁盘 mount 到容器里,容器就能够使用磁盘的所有容量)。
那么docker可以对哪些资源进行隔离?
Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制,通过*写时复制机制(copy-on-write)*实现了高效的文件操作。
namespace可以隔离哪些
一个容器要想与其他容器互不干扰需要能够做到:
文件系统需要是被隔离的
网络也是需要被隔离的
进程间的通信也要被隔离
针对权限,用户和用户组也需要隔离
进程内的PID也需要与宿主机中的PID进行隔离
容器也要有自己的主机名
有了以上的隔离,我们认为一个容器可以与宿主机和其他容器是隔离开的。
推荐学习:《docker视频教程》
Atas ialah kandungan terperinci docker不能对什么进行隔离. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!