drwxr-xr-x 7 root root 4096 Sep 4 23:11 usr/
drwxr-xr-x 5 root root 4096 Sep 4 23:11 var/
-r--r--r-- 1 root root 0 Sep 4 23:06 .wh..wh.aufs
drwx------ 2 root root 4096 Sep 4 23:06 .wh..wh.orph/
drwx------ 2 root root 4096 Sep 4 23:11 .wh..wh.plnk/
里面是一些不完整的根目录,这不能说明什么,但是我们在container中写入文件后,看看其中的变化
在容器中执行以下命令
root@df3880b17407:/# touch /opt/x
在 /opt 下我们生成了一个文件
再看看
root@ubuntu:/var/lib/docker/containers/df3880b17407575cd642a6b7da3c7e417a55fad5bbd63152f89921925626d2b6/rw# ll
total 40
drwxr-xr-x 10 root root 4096 Sep 5 01:00 ./
drwx------ 4 root root 4096 Sep 5 00:53 ../
drwxr-xr-x 6 root root 4096 Sep 4 23:49 etc/
drwxr-xr-x 2 root root 4096 Sep 5 01:00 opt/
drwxr-xr-x 2 root root 4096 Sep 5 00:23 run/
drwxrwxrwt 2 root root 4096 Sep 4 23:55 tmp/
drwxr-xr-x 7 root root 4096 Sep 4 23:11 usr/
drwxr-xr-x 5 root root 4096 Sep 4 23:11 var/
-r--r--r-- 1 root root 0 Sep 4 23:06 .wh..wh.aufs
drwx------ 2 root root 4096 Sep 4 23:06 .wh..wh.orph/
drwx------ 2 root root 4096 Sep 4 23:11 .wh..wh.plnk/
是的,在host机器上新生成了 opt/目录,这里做到了容器的写时复制
4. 资源隔离
以系统的三大进程间通信的消息队列来看
初始状态在 ghost, ipcs -q 查看消息队列
root@ubuntu:~/codes/msq# ipcs -q------ Message Queues --------
key msqid owner perms used-bytes messages
在ghost 创建一个, 这里楼主自己写的代码创建的消息队列:
root@ubuntu:~/codes/msq# ./main 1
Create msq with key id 65536root@ubuntu:~/codes/msq# ipcs -q------ Message Queues --------
key msqid owner perms used-bytes messages
0x00000001 65536 root 666 0 0
然后在容器中查看 ipcs -q
root@df3880b17407:/# ipcs -q------ Message Queues --------
key msqid owner perms used-bytes messages
可以看到系统资源是隔离的,这里只是说了一部分,其实还包括了可以通过cgoup对其做CPU和Memory的Quota管理.
默认情况下是使用了所有CPU和内存的,但是可以在config.lxc增加如下配置设置CPU等,具体可以参考lxc的文档
lxc.cgroup.cpu.shares=512 lxc.cgroup.cpuset.cpus=1.2
资源隔离的原理就在于利用cgroup,将不同进程的使用隔离开,假设每个容器都是以bash启动的,那么在容器内部,每个子进程都只能使用当前bash下面的资源,对于其他的系统资源是隔离的.子进程的访问权限由父进程决定
5.网络隔离










