Marathon 无法 运行 位于 docker 容器中的应用程序
Marathon cannot run an Application which is in docker container
我有三个安装了 docker 的节点。在主节点上,我 运行 Mesos 和 Marathon 没有任何问题。详情如下:
首先,我使用以下命令进入 docker:
docker run -v /home/user/.ssh:/root/.ssh --privileged -p
5050:5050 -p 5051:5051 -p 5052:5052 -p 2181:2181 -p 8082:8081
-p 6123:6123 -p 8080:8080 -p 50090:50090 -p 50070:50070 -p
9000:9000 -p 2888:2888 -p 3888:3888 -p 4041:4040 -p 7077:7077
-p 52222:22 -e WEAVE_CIDR=10.32.0.2/12
-e MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins
-e LIBPROCESS_IP=10.32.0.2
-e MESOS_RESOURCES=ports*:[11000-11999]
-ti hadoop_marathon_mesos_flink_2 /bin/bash
然后我 运行 Zookeeper 和 Mesos 的这些命令:
/home/zookeeper-3.4.14/bin/zkServer.sh restart
/home/mesos-1.7.2/build/bin/mesos-master.sh --ip=10.32.0.1
--hostname=10.32.0.1 --roles=marathon,flink --quorum=1
--work_dir=/var/run/mesos --log_dir=/var/log/mesos
在 运行ning Mesos 之后,我打开另一个终端 运行 Marathon:
docker run exec -it container-id /bin/bash
然后我 运行 马拉松没有任何问题:
/home/marathon-1.7.189-48bfd6000/bin/marathon
--master 10.32.0.1:5050 --zk zk://10.32.0.1:2181/marathon
--hostname 10.32.0.1 --webui_url 10.32.0.1:8080
--logging_level debug
为了测试 Marathon,我编写了一个简单的 scipt 来打印字符串,它在 docker 容器中运行良好。但是当我为 运行 脚本创建一个新的应用程序时,它不会 运行 因为这个错误:
I0428 05:32:09.167528 5115 exec.cpp:162] Version: 1.7.2
I0428 05:32:09.177440 5117 exec.cpp:236] Executor registered on agent 984595ae-e811-48fb-a9f5-ca6128e1cc1a-S0
I0428 05:32:09.179848 5120 executor.cpp:188] Received SUBSCRIBED event
I0428 05:32:09.180785 5120 executor.cpp:192] Subscribed executor on 10.32.0.3
I0428 05:32:09.180997 5120 executor.cpp:188] Received LAUNCH event
I0428 05:32:09.182319 5120 executor.cpp:697] Starting task test.f76ace45-6976-11e9-928f-ce235caa831e
I0428 05:32:09.196890 5120 executor.cpp:712] Forked command at 5124
sh: 1: /home/test.sh: not found
I0428 05:32:09.369120 5119 executor.cpp:1013] Command exited with status 127 (pid: 5124)
I0428 05:32:10.376525 5123 process.cpp:927] Stopped the socket accept loop
这意味着 Marathon 不知道 docker 容器中的应用程序。你能指导我如何解决这个问题吗?
我也在Marathon中设置了Docker镜像,但是任务又失败了,MesosUI没有任何登录SandBox.
请帮助我。
提前致谢。
问题已解决。我必须将应用程序放在从属节点的 docker 容器中。我这样做了,应用程序在马拉松中是 运行。
我有三个安装了 docker 的节点。在主节点上,我 运行 Mesos 和 Marathon 没有任何问题。详情如下: 首先,我使用以下命令进入 docker:
docker run -v /home/user/.ssh:/root/.ssh --privileged -p
5050:5050 -p 5051:5051 -p 5052:5052 -p 2181:2181 -p 8082:8081
-p 6123:6123 -p 8080:8080 -p 50090:50090 -p 50070:50070 -p
9000:9000 -p 2888:2888 -p 3888:3888 -p 4041:4040 -p 7077:7077
-p 52222:22 -e WEAVE_CIDR=10.32.0.2/12
-e MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins
-e LIBPROCESS_IP=10.32.0.2
-e MESOS_RESOURCES=ports*:[11000-11999]
-ti hadoop_marathon_mesos_flink_2 /bin/bash
然后我 运行 Zookeeper 和 Mesos 的这些命令:
/home/zookeeper-3.4.14/bin/zkServer.sh restart
/home/mesos-1.7.2/build/bin/mesos-master.sh --ip=10.32.0.1
--hostname=10.32.0.1 --roles=marathon,flink --quorum=1
--work_dir=/var/run/mesos --log_dir=/var/log/mesos
在 运行ning Mesos 之后,我打开另一个终端 运行 Marathon:
docker run exec -it container-id /bin/bash
然后我 运行 马拉松没有任何问题:
/home/marathon-1.7.189-48bfd6000/bin/marathon
--master 10.32.0.1:5050 --zk zk://10.32.0.1:2181/marathon
--hostname 10.32.0.1 --webui_url 10.32.0.1:8080
--logging_level debug
为了测试 Marathon,我编写了一个简单的 scipt 来打印字符串,它在 docker 容器中运行良好。但是当我为 运行 脚本创建一个新的应用程序时,它不会 运行 因为这个错误:
I0428 05:32:09.167528 5115 exec.cpp:162] Version: 1.7.2
I0428 05:32:09.177440 5117 exec.cpp:236] Executor registered on agent 984595ae-e811-48fb-a9f5-ca6128e1cc1a-S0
I0428 05:32:09.179848 5120 executor.cpp:188] Received SUBSCRIBED event
I0428 05:32:09.180785 5120 executor.cpp:192] Subscribed executor on 10.32.0.3
I0428 05:32:09.180997 5120 executor.cpp:188] Received LAUNCH event
I0428 05:32:09.182319 5120 executor.cpp:697] Starting task test.f76ace45-6976-11e9-928f-ce235caa831e
I0428 05:32:09.196890 5120 executor.cpp:712] Forked command at 5124 sh: 1: /home/test.sh: not found
I0428 05:32:09.369120 5119 executor.cpp:1013] Command exited with status 127 (pid: 5124)
I0428 05:32:10.376525 5123 process.cpp:927] Stopped the socket accept loop
这意味着 Marathon 不知道 docker 容器中的应用程序。你能指导我如何解决这个问题吗? 我也在Marathon中设置了Docker镜像,但是任务又失败了,MesosUI没有任何登录SandBox.
请帮助我。
提前致谢。
问题已解决。我必须将应用程序放在从属节点的 docker 容器中。我这样做了,应用程序在马拉松中是 运行。