我正在使用在Mac上运行的docker-compose安装程序,并尝试使其在几个AWS EC2实例上运行。 Mesos主Docker容器和Zookeeper / Marathon一样运行良好,但是Mesos从属存在问题:
$ 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!
我已经进行了各种搜索,并尝试了诸如挂载/ 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-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容器避免这种情况将非常方便。
如果有人偶然发现此问题并找到了解决方案,请分享!如果发现有问题,我会回发。
最佳答案
当我发现又一件事可以尝试时,我正要发布此问题,而且看起来确实做到了,所以我认为无论如何,我都会继续发布,希望该信息可以帮助其他人我花时间试图弄清楚这一点。看起来关键是将/ 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.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" \
-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 )。但是,如果这可以节省别人一些时间,那就太好了。