在Amazon Linux上启动Docker中的Mesos slave会导致cgroup错误

我正在使用我的Mac上的docker-compose安装程序,并试图使它在几个AWS EC2实例上运行。 Mesos主Docker容器和Zookeeper / Marathon一样很好,但是Mesos slave有麻烦:

$ sudo docker run --name mesos-slave1 -p 5051:5051 \ -e "MESOS_LOG_DIR=/var/log" -e "MESOS_MASTER=zk://10.xxx:2181/mesos" \ -e "MESOS_HOSTNAME=172.17.42.1" -e "MESOS_PORT:5051" \ -e "MESOS_ISOLATOR=cgroups/cpu,cgroups/mem" -e "MESOS_CONTAINERIZERS=docker,mesos" \ -e "MESOS_EXECUTOR_REGISTRATION_TIMEOUT:5mins" \ redjack/mesos-slave:0.21.0 I0708 19:26:09.559125 1 logging.cpp:172] INFO level logging started! I0708 19:26:09.569294 1 main.cpp:142] Build: 2014-11-22 05:29:57 by root I0708 19:26:09.569327 1 main.cpp:144] Version: 0.21.0 I0708 19:26:09.569340 1 main.cpp:147] Git tag: 0.21.0 I0708 19:26:09.569350 1 main.cpp:151] Git SHA: ab8fa655d34e8e15a4290422df38a18db1c09b5b Failed to create a containerizer: Could not create DockerContainerizer: Failed to find a mounted cgroups hierarchy for the 'cpu' subsystem; you probably need to mount cgroups manually! 

我做了各种各样的search,并尝试了诸如挂载/ sys和类似的方法,没有运气。 我甚至尝试在特权模式下运行docker,只是作为一个完整的检查。 我的docker-compose.yml指定:

 volumes: - /var/run/docker.sock:/var/run/docker.sock - /usr/local/bin/docker:/usr/local/bin/docker - /sys/fs/cgroup:/sys/fs/cgroup 

我从那里开始,但是将其安装在EC2实例上也不起作用。 由于它在我的Mac上正常运行,OS X和Amazon Linux之间显然有一些区别,但是我一直无法确定解决方法。 如果在操作系统识别方面很方便,则在EC2实例中说:

 $ uname -a Linux ip-10-xxx 3.14.35-28.38.amzn1.x86_64 #1 SMP Wed Mar 11 22:50:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 

我可能会直接在EC2实例上直接安装Mesos,但是当然,通过使用Docker容器会很方便。

如果有人偶然发现了这个问题并find了解决办法,请分享! 如果我弄清楚什么,我会回复。

当我发现有一件事要尝试的时候,我正要发布这个问题,而且看起来像是这样做的,所以我想我会把这个工作放在后面,然后发post,希望这个信息可以拯救别人我试图弄清楚这一点。 看起来关键是将/ cgroup挂载为一个卷,这大概是OS X和Amazon Linux(又名Centos变体)之间的区别。 似乎正在工作的最后的docker咒语:

 $ sudo docker run --privileged=true --name mesos-slave1 -p 5051:5051 \ -e "MESOS_LOG_DIR=/var/log" -e "MESOS_MASTER=zk://10.xxx:2181/mesos" \ -e "MESOS_HOSTNAME=172.17.42.1" -e "MESOS_PORT:5051" \ -e "MESOS_ISOLATOR=cgroups/cpu,cgroups/mem" \ -e "MESOS_CONTAINERIZERS=docker,mesos" \ -e "MESOS_EXECUTOR_REGISTRATION_TIMEOUT:5mins" \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /usr/local/bin/docker:/usr/local/bin/docker -v /sys:/sys \ -v /cgroup:/cgroup redjack/mesos-slave:0.21.0 

我仍在试验,所以我不能确定是否需要特权模式,以及其他卷是否真的需要(docker的东西)。 但是如果这节省了别人的时间,那太好了。