Hi David, Thanks for your suggestion. This approach sounds promising for what I need to do. I'm going to have to try this out.
Thanks! Janet -- Janet Borschowa CodeFutures Corporation On Thu, Nov 20, 2014 at 5:04 AM, David Greenberg <dsg123456...@gmail.com> wrote: > One cool feature of the docker containerizer is that you can actually > launch your executor inside the docker image, so that you can just layer > the executor's custom logic on top of whatever container you desire. This > way, you can more easily control what's happening in the docker image, and > still leverage the containerizer. > > On Thursday, November 20, 2014, Tim Chen <t...@mesosphere.io> wrote: > >> Hi Janet, >> >> Can you elaborate more what you like to get back from the docker >> container that you launched? >> >> Thanks, >> >> Tim >> >> On Wed, Nov 19, 2014 at 5:22 PM, Tom Arnfeld <t...@duedil.com> wrote: >> >>> Hi Janet, >>> >>> Oh sorry my mistake, I didn't read your email correctly, I thought you >>> were using the containerizer. What you're doing here is actually going to >>> be quite difficult to do, the mesos docker containerizer has some quite >>> complex logic implemented to ensure the slave stays in sync with the >>> containers that are running, and kills anything that goes rogue. >>> >>> It's going to be non-trivial for you to do that from the executor, >>> though I guess you could make use of the docker events API or poll other >>> endpoints in the API to check the status of your containers, and off the >>> back of that send status updates to the cluster. Doing this however brings >>> no guarantees that if your executor dies exceptionally (perhaps OOMd) the >>> containers spawned will die... they'll keep running in the background and >>> it'll be hard for you to know the state of your containers on the cluster. >>> >>> You probably want to be aware (if you don't know already) that the >>> resource limits assigned to your tasks aren't going to be enforced by mesos >>> because docker is running outside of its control. You'll need to pass the >>> correct CPU/Memory limit parameters to your docker containers to ensure >>> this happens correctly. >>> >>> Here are the docker API docs; >>> https://docs.docker.com/reference/api/docker_remote_api_v1.15/ >>> >>> Something you might want to consider, if all you're trying to do is >>> allow your container access to details about itself (e.g `docker inspect`) >>> is to open up the docker remote API to be queried by your containers on the >>> slave, and switch to using the mesos docker containerizer. >>> >>> I hope that helps somewhat! >>> >>> Tom. >>> >>> -- >>> >>> Tom Arnfeld >>> Developer // DueDil >>> >>> (+44) 7525940046 >>> 25 Christopher Street, London, EC2A 2BS >>> >>> >>> On Wed, Nov 19, 2014 at 10:16 PM, Janet Borschowa < >>> janet.borsch...@codefutures.com> wrote: >>> >>>> Hi, >>>> I'm implementing an executor which is used by the mesos slave to launch >>>> tasks. The tasks are to launch a docker container - this is because I need >>>> more info about the launched container than what the docker containerizer >>>> returns. >>>> >>>> Is it OK to block in the executor's launchTask method until the task >>>> completes? If not, how does the framework discover when that task >>>> completes? I could spawn a process which notifies my executor when the task >>>> completes and then have my executor send a status update. Or is there some >>>> other recommended way to deal with this when the task could run for an >>>> indefinite period of time before completing its work? >>>> >>>> Thanks! >>>> >>>> Janet >>>> >>>> -- >>>> Janet Borschowa >>>> CodeFutures Corporation >>>> >>>> >>>> >>> >>