Thanks Stephan.

Do you have a rough estimate on that feature?

In the mean time, is overriding the DockerContainerizer to manually call the isolator methods a viable option?


On 25/11/2015 12:03, Erb, Stephan wrote:
Hi Frank,

the way I understand it, it will soon be possible to use custom and default 
Mesos isolators together with Docker via the unified container support in 
Mesos. Basically, goal is is to support docker image format without relying on 
docker daemon.

Best Regards,
From: Frank Scholten <>
Sent: Wednesday, November 25, 2015 11:50 AM
Subject: Mesos Flocker - Custom Isolator and Docker

Hi all,

We (Frank Scholten and Phil Winder) are currently developing the Mesos
Flocker framework. As part of this framework we want to develop a
custom isolator module which interacts with the Flocker Control

After creating a simple stub isolator and installing it on one of the
agents we noticed it gets picked up we run a regular task but it does
not get picked up when we run a Docker container.

To us it seems that this is because isolators can only be used by the
MesosContainerizer. The MesosContainerizer configures isolation in its
create factory method while the DockerContainerizes does not:


Try<MesosContainerizer*> MesosContainerizer::create(
     const Flags& flags,
     bool local,
     Fetcher* fetcher)
   string isolation;

   if (flags.isolation == "process") {
     LOG(WARNING) << "The 'process' isolation flag is deprecated, "
                  << "please update your flags to"
                  << " '--isolation=posix/cpu,posix/mem'.";

     isolation = "posix/cpu,posix/mem";
   } else if (flags.isolation == "cgroups") {
     LOG(WARNING) << "The 'cgroups' isolation flag is deprecated, "
                  << "please update your flags to"
                  << " '--isolation=cgroups/cpu,cgroups/mem'.";

     isolation = "cgroups/cpu,cgroups/mem";
   } else {
     isolation = flags.isolation;


Try<DockerContainerizer*> DockerContainerizer::create(
     const Flags& flags,
     Fetcher* fetcher)
   Try<Docker*> create = Docker::create(flags.docker, flags.docker_socket, 
   if (create.isError()) {
     return Error("Failed to create docker: " + create.error());

   Shared<Docker> docker(create.get());

   if (flags.docker_mesos_image.isSome()) {
     Try<Nothing> validateResult = docker->validateVersion(Version(1, 5, 0));
     if (validateResult.isError()) {
       string message = "Docker with mesos images requires docker 1.5+";
       message += validateResult.error();
       return Error(message);

   return new DockerContainerizer(flags, fetcher, docker);

The question now is how can we create an isolator to work together
with the DockerContainerizer. Should we subclass the
DockerContainerizer and create a FlockerContainerizer instead? Any
other suggestions?

Thanks in advance.


Frank and Phil

Reply via email to