docker

namespace

包括uts(主机名和域名),ipc(信号量,共享内存和消息队列),pid(进程号),Netweork(网络设备和端口)Mount(挂载和文件系统)User(用户)

namespace mount的局限性

mount namespace修改了容器进程对文件系统挂载点的认知,所以在进行挂载之后,进程的视图才会发生改变,所以容器创建后要对rootfs进行挂载(chroot)

cgroups

限制进程组的资源上限,

可以简单的理解为子系统文件和一组资源限制文件的组合

docker启动过程

1.启动linux namespace

2.设置cgroups参数

3.切换根目录

docker image

union file system

可以将多个目录同时挂载到一个目录下,相同的文件会被合并

默认使用AuFS ,目录结构在/var/lib/docker/aufs/ 下

镜像分层储存,同时挂载在同一个点进行合并

第一部分,只读层

操作系统本身的文件,挂载方式为(readonly和whiteout)

第二部分,可读写层