设为首页 收藏本站
查看: 1025|回复: 0

[经验分享] ubuntu 14.04 体验LXC非特权容器

[复制链接]

尚未签到

发表于 2018-5-3 06:02:41 | 显示全部楼层 |阅读模式
  LXC 1.0 最大的特性是非特权容器,通过巧妙的uidmap,将物理机的普通用户(uid和gid)映射成容器里的root(uid=0,gid=0),极大的提高了lxc的安全性。
  

  LXC 1.0 对内核和python版本有要求,故下文以 ubuntu 14.04 为例,使用普通用户dell创建非特权的lxc容器。
  (以下操作,非特别说明,均为root权限操作,命令提示符为#号)
  

  1、安装lxc
apt-get install lxc uidmap  2、创建普通用户

useradd -m dell
mkdir -p /home/dell/.local/share/lxc
mkdir -p /home/dell.config/lxc  

  3、配置uidmap
  

  lxc 1.0 之前的版本虚拟机里的root 和宿主机root 共享一个uid/gid 0,这样非常不安全。
  

  为了解决uid/gid为0的问题,非特权虚拟机主要依赖uidmap实现。

  

  由于0-65535已经分配给了系统,lxc虚拟机需要额外分配id,映射成0,这里选择100000-165535

  

  (我的理解是,其它非uid/gid 为0的用户依然保持内外一致。)
  

  这里使用一个普通用户dell
usermod -v 100000-165535 dell
usermod -w 100000-165535 dell
echo "lxc.id_map = u 0 100000 65536" >> /etc/lxc/default.conf
echo "lxc.id_map = g 0 100000 65536" >> /etc/lxc/default.conf  

  u 0 100000 65536 表示 将uid 0映射成100000,共65536个
  

  4、修改lxc配置

echo "dell veth lxcbr0 10" >> /etc/lxc/lxc-usernet
cat /etc/lxc/lxc-usernet >/home/dell/.config/lxc/default.conf  dell veth lxcbr0 10 表示dell用户最多可创建10个veth 桥接网卡
  

  5、修正权限

chmod +x /home/dell
chown -R dell:dell /home/dell  6、以dell身份登录,创建容器
  非特权容器创建有点区别,它使用一个download模板,去下载指定的已打包好的完整系统,而非使用apt/yum
lxc-create -n my-ubuntu -t download  -n 意思是--name,容器的名字

  -t 意思是 --template,指定使用哪个模板
  

  接下来会出现文本对话,模板包含主流的发行版,centos/debian/ubuntu等,选择自己需要的发行版,版本号,CPU架构 。
  

  ubuntu 对非特权容器支持很好,这里选择ubuntu trusty amd64
  

  也可以使用下面的命令,跳过对话,直接安装ubuntu非特权容器
lxc-create -t download -n my-ubuntu -- -d ubuntu -r trusty -a amd64  ubuntu模板系统默认的用户和密码均是ubuntu,可以sudo 。

  

  7、查看刚刚创建的非特权容器
lxc-ls  8、启动非特权容器

lxc-start -n my-ubuntu  

  9、小技巧

  

  a、让容器随系统启动
  开机启动
  $ echo "lxc.start.auto = 1" >>/home/dell/.local/share/lxc/my-ubuntu/config
  开机延时启动
  $ echo "lxc.start.delay = 5" >>/home/dell/.local/share/lxc/my-ubuntu/config
  

  b、限制容器的资源
  限CPU
  $ echo "lxc.cgroup.cpu.shares  = 256" >>/home/dell/.local/share/lxc/my-ubuntu/config
  限内存
  $ echo "lxc.cgroup.memory.limit_in_bytes = 1024M" >>/home/dell/.local/share/lxc/my-ubuntu/config
  限磁盘IO
  $ echo "lxc.cgroup.blkio.weight = 500" >>/home/dell/.local/share/lxc/my-ubuntu/config
  

  c、lxc官方已经打包了多个Linux系统,centos/debian/ubuntu各个版本皆有,也可以去官网手动下载。
  

  http://images.linuxcontainers.org/images/
  

  参考文档
  https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-455026-1-1.html 上篇帖子: 如何更改ubuntu服务器的时区 下篇帖子: Ubuntu上ssh时跳过known_hosts文件办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表