Tag: 中间件

在自定义的mesos调度程序启动的Docker容器中运行自定义执行程序

Mesos自定义框架:我们的目标是启动docker集装箱。 如果容器有权访问作为URI一部分传递的jar文件,则此Docker容器应该具有自定义的执行程序。 这是编辑的代码摘录作为独立主类的一部分,作为框架的起点。 String path = "http://localhost/example/example-1.0-SNAPSHOT-jar-with-dependencies.jar"; Protos.CommandInfo.URI uri = Protos.CommandInfo.URI.newBuilder().setValue(path).setExtract(false).build(); String command = "java -cp example-1.0-SNAPSHOT-jar-with-dependencies.jar com.example.ExampleExecutor"; Protos.CommandInfo commandInfo = Protos.CommandInfo.newBuilder().setValue(command).addUris(uri).build(); Protos.ContainerInfo.DockerInfo.Builder dockerInfo = Protos.ContainerInfo.DockerInfo.newBuilder(); dockerInfo.setImage(imageName); dockerInfo.setNetwork(Protos.ContainerInfo.DockerInfo.Network.BRIDGE); Protos.ContainerInfo.Builder containerInfo = Protos.ContainerInfo.newBuilder(); containerInfo.setType(Protos.ContainerInfo.Type.DOCKER); containerInfo.setDocker(dockerInfo.build()); Protos.ExecutorInfo exampleExecutor = Protos.ExecutorInfo.newBuilder() .setExecutorId(Protos.ExecutorID.newBuilder().setValue("ExampleExecutor")) .setCommand(commandInfo) .setName("Example Executor") .setContainer(containerInfo) .setSource("java") .build(); Mesos自定义调度程序:下面是用于启动泊坞窗任务的代码摘录。 我们希望将Docker作为执行者而不是任务。 Protos.TaskInfo task = Protos.TaskInfo.newBuilder() .setName("task " + taskId).setTaskId(taskId) […]