在docker之前docker cgroup设置 为什么不火

作为我在ApacheCon工作的一份呈现,我正在Docker内部使用一些cgroups 。
我发现这方面的文档很少,所以我想把它们合到一块发一篇关于它的博客。
启用LXC驱动
假设你已经在Ubuntu 14.04上安装了Docker,你仍旧需要启用LXC驱动。
要开启该项,你需要这样做
$ apt-get install -y lxc
$ echo 'DOCKER_OPTS="--exec-driver=lxc"' /
| tee -a /etc/default/docker
$ service docker restart`
启用两个不没有cgroup策略的容器
让我们先加载两个容器,两个的CPU都要最大化(通过运行md5sum /dev/urandom)
$ docker run -d busybox md5sum /dev/urandom
$ docker run -d busybox md5sum /dev/urandom
正如预期的,我们可以看到这些容器完全使用了每一个CPU内核。
启用两个没有cgroup策略的容器
现在让我们通过添加两条cgroup策略启用新的LXC选项。我们想要做的是运行相同的工作负荷且运行在相同CPU内核。我们期望它会占有CPU50%。而且,我们想给其中一个容器80%的CPU共享,其他一个共享20%。要做到这一点,我们使用‘cpu.shares’来分配CPU并使用‘cpuset.cpus’锁定容器到同一个CPU内核。
用低优先级启动容器:
$ docker run -d --name='low_prio' /
--lxc-conf="lxc.cgroup.cpu.shares=250" /
--lxc-conf="lxc.cgroup.cpuset.cpus=0" /
busybox md5sum /dev/urandom
用高优先级启动容器:
$ docker run -d --name='high_prio' /
--lxc-conf="lxc.cgroup.cpu.shares=750" /
--lxc-conf="lxc.cgroup.cpuset.cpus=0" /
busybox md5sum /dev/urandom
正如你所看到的,它奏效了!折腾快乐!
在文章中找不到问题答案?您还可以
热门栏目订阅在RedHat/CentOS下安装Docker(不升级内核)-红联Linux系统门户
您的位置:
&& 查看内容 - - -
在RedHat/CentOS下安装Docker(不升级内核)
velcbo发布于
&&字号: &&&&(网友评论&0&条)&
由于内核版本问题,最初仅Ubuntu可以较好的支持Docker。不过,由于RedHat系列OS(REHL、CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker很有必要。目前Docker和RedHat已经展开深入合作,并在2013年年底推出了可以在RedHat系列OS上运行的Docker0.7。
目前有一些博客介绍了如何在CentOS上安装Docker。但是这些博客都是针对老版本的Docker,安装方法是在升级操作系统内核版本的基础上完成。问题是,我们不可以随意升级生产环境的操作系统内核版本,而且Docker0.7的主旨就是:Docker使用者可以在不升级内核的前提下,在RedHat环境这使用Docker。因此,这里撰写一篇博客,介绍如何在RedHat/CentOS环境下,安装新版本的Docker。
一、禁用selinux
由于Selinux和LXC有冲突,所以需要禁用selinux。编辑/etc/selinux/config,设置两个关键变量。
SELINUX=disabled
SELINUXTYPE=targeted
二、配置Fedora EPEL源
1 sudo yum install
三、添加hop5.repo源
cd /etc/yum.repos.d
四、安装Docker
sudo yum install docker-io
yum安装过程中,可以发现安装的软件只有docker和lxc相关包,没有内核包,例如kernel-ml-aufs。
五、初步验证docker
输入docker -h,如果有如下输出,就证明docker在形式上已经安装成功。
# docker -h
Usage of docker:
-D=false: Enable debug mode
-H=[]: Multiple tcp://host:port or unix://path/to/socket to bind in daemon mode, single connection otherwise
-api-enable-cors=false: Enable CORS headers in the remote API
-b="": Attach containers to a pre-exi use 'none' to disable container networking
-bip="": Use this CIDR notation address for the network bridge's IP, not compatible with -b
-d=false: Enable daemon mode
-dns=[]: Force docker to use specific DNS servers
-g="/var/lib/docker": Path to use as the root of the docker runtime
-icc=true: Enable inter-container communication
-ip="0.0.0.0": Default IP address to use when binding container ports
-iptables=true: Disable docker's addition of iptables rules
-p="/var/run/docker.pid": Path to use for daemon PID file
-r=true: Restart previously running containers
-s="": Force the docker runtime to use a specific storage driver
-v=false: Print version information and quit
六、手动挂载cgroup
在RedHat/CentOS环境中运行docker、lxc,需要手动重新挂载cgroup。
我们首选禁用cgroup对应服务cgconfig。
sudo service cgconfig stop # 关闭服务
sudo chkconfig cgconfig off # 取消开机启动
然后挂载cgroup,可以命令行挂载
mount -t cgroup none /cgroup # 仅本次有效
或者修改配置文件,编辑/etc/fstab,加入
none /cgroup cgroup defaults 0 0 # 开机后自动挂载,一直有效
七、调整lxc版本
Docker0.7默认使用的是lxc-0.9.0,该版本lxc在redhat上不能正常运行,需要调整lxc版本为lxc-0.7.5或者lxc-1.0.0Beta2。前者可以通过lxc网站()下载,后者需要在github上下载最新的lxc版本(,目前版本是lxc-1.0.0Beta2)。
这里特别说明一点,由于Docker安装绝对路径/usr/bin/lxc-xxx调用lxc相关命令,所以需要将lxc-xxx安装到/usr/bin/目录下。
八、启动docker服务
sudo service docker start # 启动服务
sudo chkconfig docker on
# 开机启动
九、试运行
sudo docker run -i -t Ubuntu /bin/echo hello world
初次执行此命令会先拉取镜像文件,耗费一定时间。最后应当输出hello world。
作者:speakingbaicai
发表评论,与各位同人交流。回复请点击下方的我要评论按钮(游客可回复),要发表贴子请点击
Linux教程下载?“”(请点击),Linux教程免费下载。
求助Linux问题?论坛有39版块,覆盖所有Linux技术层面。前往“”
 |  |  |  |  |  |  |  |  |  |  |  | 
&2015 红联 Powered by SupSite

我要回帖

更多关于 docker为什么这么火 的文章

 

随机推荐