zoukankan      html  css  js  c++  java
  • Docker 资源控制

    之前一直做docker的实验,可是遇到了好多问题,在ubuntu 12.04 环境下很难模拟出真实机器的环境,(尤其是hosts文件无法修改,服务无法启动。。。),就转战vagrant,放弃了一段时间。

    最近docker 0.10 发布加上ubuntu14.04 的感觉docker用起来和顺手多了,所以捡起来慢慢研究。

    docker和vagrant相比各有各的优势,之所以选择docker 是因为快,vagrant启动一个环境大概需要40s左右,而docker是几s,各方面也很灵活的打包,不过对于资源的掌控还是不能得心应手。

    比如增加网卡,控制网卡的ip,控制内存的大小。

    1.  如何增加一个额外的网卡并指定ip地址

    可以通过--lxc-conf指定(0.7.2环境下可用,新版本还在研究)

    2.  限制内存的使用

    docker的命令中有一个-m参数可以限制容器使用的内存大小

      -m, --memory="": Memory limit (format: <number><optional unit>, where unit = b, k, m or g)

    加上-m参数一般会直接返回:WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

    需要修改启动参数,重启

    在/etc/default/grub中添加

    GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

    执行sudo update-grub,并重启

    docker run -i -t -m 32m  ubuntu /bin/bash

    进入容器,free -m 发现内存并没有变化(和host一样),但是确实在cgroup中做了限制,可以尝试用dd 消耗内存,看宿主的内存变化

    事实上,已经被限制在32m的使用量了。

    3.  限制cpu的使用

    docker是基于lxc实现的,lxc又是基于cgroups完成,所以对于cpu的控制也是很随意的(O(∩_∩)O~)。

      -c, --cpu-shares=0: CPU shares (relative weight)

    docker run -i -t -m 32m -c 512 ubuntu /bin/bash

    (1024 是基数,512就是分配为正常的一半的时间权重,2048就是正常的一倍,当然也可以是任意数值,只不过512 和 1024 比较好算比例)

    未完待续。。。

  • 相关阅读:
    浅谈Linux进程
    POJ 1426 Find The Multiple
    JS JavaScript闭包和作用域
    JS JavaScript深拷贝、浅拷贝
    JS JavaScript中的文档碎片 DocumentFragement JS性能优化
    前端DOM知识点
    JS JavaScript中的this
    JS JavaScript实现杨辉三角
    JS JavaScript事件循环机制
    ES6基本语法
  • 原文地址:https://www.cnblogs.com/fengrenzw/p/3714605.html
Copyright © 2011-2022 走看看