aurora-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anindya Sinha (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (AURORA-633) Support running Docker containers
Date Tue, 02 Sep 2014 19:09:21 GMT

    [ https://issues.apache.org/jira/browse/AURORA-633?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14118532#comment-14118532
] 

Anindya Sinha edited comment on AURORA-633 at 9/2/14 7:08 PM:
--------------------------------------------------------------

Since {{task = Required(Task)}}, no change is being proposed to {{MesosJob (or Job)}}. Instead,
support for docker in aurora is being proposed to be within the {{Task}} as follows:

1) In {{Task}}, an optional field {{container}} (of type {{Container}} - a new Struct defined
in #2 below) is being added. One of processes or container must be present in Task definition.
2) Definition of {{Container}} is as follows. Note that volumes is a list of {{Volume}} defined
below (in #3):

class Container(Struct):
  name = Default(String, "{{image}}")
  image = Required(String)
  type = Default(String, "docker") -> The only valid value right now is docker
  volumes = Default(List(Volume), [])

3) Definition of a volume is as follows:

class Volume(Struct):
  name = Default(String, "{{container_path}}")
  container_path = Required(String)
  host_path = Required(String)
  mode = Default(String, "RO") -> Note that this can be RO or RW

4) Added a 'Docker()' as follows (like 'Service = Job(service=True)'):
  {{Docker = Container(type="docker")}}

As an example:

task = Task(
  name = "task_hello",
  container = Docker(
    name = "docker_hello",
    image = "centos:6u5",
    volumes = [
        Volume(
            name = "v1",
            container_path = "/cnt1",
            host_path = "/host1"),
        Volume(
            name = "v2",
            container_path = "/cnt2",
            host_path = "/host2",
            mode = "RW")
            ]
  ),
  processes = [hello],
  constraints = order(hello),
  resources = Resources(cpu = 1.0, ram = 128*MB, disk = 128*MB))

jobs = [Service(task = task, ...)]



was (Author: anindya.sinha):
Since {{task = Required(Task)}}, no change is being proposed to {{MesosJob (or Job)}}. Instead,
support for docker in aurora is being proposed to be within the {{Task}} as follows:

1) In {{Task}}, an optional field {{container}} (of type {{Container}} - a new Struct defined
in #2 below) is being added. One of processes or container must be present in Task definition.
2) Definition of {{Container}} is as follows. Note that volumes is a list of {{Volume}} defined
below (in #3):
{{
class Container(Struct):
  name = Default(String, "{{image}}")
  image = Required(String)
  type = Default(String, "docker") -> The only valid value right now is docker
  volumes = Default(List(Volume), [])
}}
3) Definition of a volume is as follows:
{{
class Volume(Struct):
  name = Default(String, "{{container_path}}")
  container_path = Required(String)
  host_path = Required(String)
  mode = Default(String, "RO") -> Note that this can be RO or RW
}}
4) Added a 'Docker()' as follows (like 'Service = Job(service=True)'):
  {{Docker = Container(type="docker")}}

As an example:
{{
task = Task(
  name = "task_hello",
  container = Docker(
    name = "docker_hello",
    image = "centos:6u5",
    volumes = [
        Volume(
            name = "v1",
            container_path = "/cnt1",
            host_path = "/host1"),
        Volume(
            name = "v2",
            container_path = "/cnt2",
            host_path = "/host2",
            mode = "RW")
            ]
  ),
  processes = [hello],
  constraints = order(hello),
  resources = Resources(cpu = 1.0, ram = 128*MB, disk = 128*MB))

jobs = [Service(task = task, ...)]
}}

> Support running Docker containers
> ---------------------------------
>
>                 Key: AURORA-633
>                 URL: https://issues.apache.org/jira/browse/AURORA-633
>             Project: Aurora
>          Issue Type: Epic
>          Components: Client, Scheduler
>            Reporter: Jay Buffington
>            Assignee: Jay Buffington
>
> Mesos 0.20 will be released soon, and it will likely include support for a docker containerizer.
 See MESOS-1524.
> To make use of this feature, I propose modifying aurora's DSL to support running docker
containers both with and without the aurora executor.
> Task would be changed to introduce a container field and make processes optional when
a container is specified.  A Task to launch a Docker container using the entry point (aka
command) specified in the container would look like this:
> {noformat}
> Task(
>     name="my-task",
>     container=Docker(
>         image="docker:///centos:6u5',
>     ),
>     resources=Resources(cpu=1, disk=10*GB, ram=1*GB)
> )
> {noformat}
> If you specify processes in your Task then the docker containerizer will fetch and launch
the aurora executor for you.  This would run {{process_a}} then {{process_b}} inside the same
docker container using the aurora executor:
> {noformat}
> Task(
>     name="my-task",
>     container=Docker(
>         image="docker:///centos:6u5',
>     ),
>     processes=[process_a, process_b],
>     constraints=order(process_a, process_b),
>     resources=Resources(cpu=1, disk=10*GB, ram=1*GB)
> )
> {noformat}
> The Docker() struct would closely model the fields that will be in the DockerInfo protobuf
message detailed here: https://github.com/tnachen/mesos/wiki/DockerInfo-design



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message