超级权限容器,权限容器


..
声明:
本博客欢迎转发,但请保留原作者信息!
博客地址:http://blog.csdn.net/halcyonbaby
新浪微博:@寻觅神迹

内容系本人学习、研究和总结,如有雷同,实属荣幸!

==================

超级权限容器

很多时候容器需要更大的权限,比如以下场景:
1. libvirt容器化
2. 容器内进行kernel module的挂载
3. 容器内进程对Host进行管理、监控
4. 在容器内对host执行命令(进行挂卷、用户创建、软件启停)

主要做法:
使用–privileged关闭大部分安全设置,也可以通过cap_add/cap_remove进行精细控制。
–net=host,让容器与host使用相同的net。
–ipc=net,让容器与host使用相同的ipc。
-v /run:/run ,让容器内与dbus服务进行通信。
-v /:/host,进入其他namespace进行操作。
-v /sys/fs/cgroup:/sys/fs/cgroup,使用selinux或者cgroup。

例子(容器化libvirt):

sudo docker run --rm --privileged --net=host -ti -e 'container=docker' -v /proc/modules:/proc/modules -v /var/lib/libvirt/:/var/lib/libvirt/ -v /sys/fs/cgroup:/sys/fs/cgroup:rw libvirtd

例子(添加kernel模块):

sudo docker run --rm  --privileged foobar /sbin/modprobe PATHTO/foobar-kmod

例子(添加用户):

sudo docker run -ti --privileged -d --net=host -e sysimage=/host -v /:/host -v /dev:/dev -v /run:/run /bin/sh
sudo nsenter --mount=$sysimage/proc/1/ns/mnt -- /sbin/adduser testuser

参考:
http://developerblog.redhat.com/2014/11/06/introducing-a-super-privileged-container-concept/
http://www.projectatomic.io/blog/2014/10/libvirtd_in_containers/

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关内容