You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@aurora.apache.org by "Anindya Sinha (JIRA)" <ji...@apache.org> on 2014/09/02 20:54:21 UTC

[jira] [Commented] (AURORA-633) Support running Docker containers

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

Anindya Sinha commented on AURORA-633:
--------------------------------------

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)