aufs
aufs是一种实现了联合挂载(union mount)的文件系统,同unionfs类似,它能够将不同类型的文件系统透明地层叠在一起,实现一个高效的分层文件系统。说白了aufs就是能将不同的目录挂载到某一目录下,并将各个源目录下的内容联合到目标目录下,这里每个源目录对应aufs中的一层,用户在目标目录读写时,感觉不到此目录是联合而来的。aufs中的每一层都可以有不同的权限(只读,读写),从而可以实现文件隔离。
aufs里每个源目录都是一个branch,挂载过程就是对不同branch进行联合操作,当不同分支内容相同时,上层覆盖下层。mount命令中,-t表示目标文件系统类型,-o表示挂载参数, none表示挂载的不是设备文件。这些都是mount命令的参数。br是aufs的参数,表示分支,多个分支之间用冒号(:)分隔,由于分支之间在逻辑上是层叠的,因此声明在前的表示逻辑上层,声明在后的表示逻辑上层,示例中a目录覆盖b目录
网络隔离:
说到网络隔离,就要先明白namespace的概念,namespace是Docker的重要组成部分之一,它通过namespace对pid、network、mount进行隔离
Bridge:ip会连接到docker0上,然后通过eth1转发出去。该模式可以获得独立的network namespace,从而在容器内获取独立ip与port,可以控制在一个bridge网络内的container互相连通,不同bridge的container互相隔离。
Host:容器实际上继承了宿主机的IP地址。该模式比bridge模式更快(因为没有路由开销),但是它将容器直接暴露在公共网络中,是有安全隐患的。该模式不会获得独立的network namespace,将会直接连接宿主机的网卡,ip、port和宿主机是对应的。
None:该模式下的容器不会与外部通信,完全封闭。