我正在我的mac上使用docker compose设置,并尝试在几个aws ec2示例上运行它。mesos master 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.x.x.x: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!
我做过各种各样的搜索,尝试过mounting/sys和类似的方法,但都没有成功。我甚至试过在特权模式下运行docker作为一种精神检查。my 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上运行,OSX和AmazonLinux之间显然存在一些与此相关的差异,但我还无法确定解决方法。为了方便操作系统识别,在ec2示例上,它说:
$ uname -a
Linux ip-10-x-x-x 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容器来避免这种情况当然是非常方便的。
如果有人无意中发现了这个问题并找到了解决方案,请分享!如果我有什么发现我会发回的。
1条答案
按热度按时间a7qyws3x1#
我正准备发布这个问题时,我又发现了一个可以尝试的东西,看起来它做到了,所以我想我还是在完成工作后继续发布吧,希望这些信息可以节省我花在解决这个问题上的时间。看起来关键是将/cgroup装载为一个卷,这可能是osx和amazonlinux(又称centos变体)之间的区别。 Docker 最后的咒语似乎在起作用:
我还在试验,所以我不能确定是否需要特权模式,以及是否真的需要其他一些卷(docker之类的)。但如果这能帮别人省点时间,那就太好了。