You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by Olivier Sallou <ol...@irisa.fr> on 2015/05/29 14:07:28 UTC

Docker port_mapping issue

Hi,
I can run task with success in a Docker container in my mesos install
using base executor.

However, I cannot get a task running when I add port mapping (though
port is available).

I use mesos 0.22, with python 2.7.


If I print the sent task I have:

name: "task 0"
task_id {
  value: "0"
}
slave_id {
  value: "20150526-114150-16777343-5050-2035-S0"
}
resources {
  name: "cpus"
  type: SCALAR
  scalar {
    value: 1
  }
}
resources {
  name: "mem"
  type: SCALAR
  scalar {
    value: 128
  }
}
command {
  value: "echo \"hello world # $MESOS_SANDBOX #\""
}
container {
  type: DOCKER
  docker {
    image: "centos"
    network: BRIDGE
    port_mappings {
      host_port: 31000
      container_port: 22
    }
    force_pull_image: true
  }
}

And it ends with error:

Task 0 is in state TASK_FAILED
Abnormal executor termination


Slave shows:

I0529 13:50:49.813928 18426 docker.cpp:626] Starting container
'd9b5be3e-9f00-4242-aa91-d6a6f3a5175a' for task '0' (and executor '0')
of framework '20150529-103634-16777343-5050-18179-0020'
E0529 13:50:54.362663 18420 slave.cpp:3112] Container
'd9b5be3e-9f00-4242-aa91-d6a6f3a5175a' for executor '0' of framework
'20150529-103634-16777343-5050-18179-0020' failed to start: Port
mappings require port resources

However the offer present port resources:

resources {
  name: "ports"
  type: RANGES
  ranges {
    range {
      begin: 31000
      end: 32000
    }
  }
  role: "*"
}

At slave startup I also see:
I0529 14:05:37.481212 22455 slave.cpp:322] Slave resources: cpus(*):8;
mem(*):6900; disk(*):215925; ports(*):[31000-32000]


Any idea of what is going wrong?


Thanks

Olivier

-- 

gpg key id: 4096R/326D8438  (keyring.debian.org)
Key fingerprint = 5FB4 6F83 D3B9 5204 6335  D26D 78DC 68DB 326D 8438



Re: Docker port_mapping issue

Posted by Timothy Chen <tn...@gmail.com>.
Hi Oliver,

Yes you need to include the port range you want to use in your Task,
and later in the DockerInfo specifiy how do you want to use them (you
can map multiple ones in that list).

Thanks!

Tim

On Fri, May 29, 2015 at 5:43 AM, Olivier Sallou <ol...@irisa.fr> wrote:
>
>
> On 05/29/2015 02:07 PM, Olivier Sallou wrote:
>> Hi,
>> I can run task with success in a Docker container in my mesos install
>> using base executor.
>>
>> However, I cannot get a task running when I add port mapping (though
>> port is available).
> ok, it appears that in addition to Docker port_mapping, we need to add a
> port resource declaration in the task too, with something like:
>
>                 ports = task.resources.add()
>                 ports.name = "ports"
>                 ports.type = mesos_pb2.Value.RANGES
>                 port_range = ports.ranges.range.add()
>                 port_range.begin=31000
>                 port_range.end=31000
>
> we kinda need to duplicate port declaration (task and docker) in task.
>
>
>> I use mesos 0.22, with python 2.7.
>>
>>
>> If I print the sent task I have:
>>
>> name: "task 0"
>> task_id {
>>   value: "0"
>> }
>> slave_id {
>>   value: "20150526-114150-16777343-5050-2035-S0"
>> }
>> resources {
>>   name: "cpus"
>>   type: SCALAR
>>   scalar {
>>     value: 1
>>   }
>> }
>> resources {
>>   name: "mem"
>>   type: SCALAR
>>   scalar {
>>     value: 128
>>   }
>> }
>> command {
>>   value: "echo \"hello world # $MESOS_SANDBOX #\""
>> }
>> container {
>>   type: DOCKER
>>   docker {
>>     image: "centos"
>>     network: BRIDGE
>>     port_mappings {
>>       host_port: 31000
>>       container_port: 22
>>     }
>>     force_pull_image: true
>>   }
>> }
>>
>> And it ends with error:
>>
>> Task 0 is in state TASK_FAILED
>> Abnormal executor termination
>>
>>
>> Slave shows:
>>
>> I0529 13:50:49.813928 18426 docker.cpp:626] Starting container
>> 'd9b5be3e-9f00-4242-aa91-d6a6f3a5175a' for task '0' (and executor '0')
>> of framework '20150529-103634-16777343-5050-18179-0020'
>> E0529 13:50:54.362663 18420 slave.cpp:3112] Container
>> 'd9b5be3e-9f00-4242-aa91-d6a6f3a5175a' for executor '0' of framework
>> '20150529-103634-16777343-5050-18179-0020' failed to start: Port
>> mappings require port resources
>>
>> However the offer present port resources:
>>
>> resources {
>>   name: "ports"
>>   type: RANGES
>>   ranges {
>>     range {
>>       begin: 31000
>>       end: 32000
>>     }
>>   }
>>   role: "*"
>> }
>>
>> At slave startup I also see:
>> I0529 14:05:37.481212 22455 slave.cpp:322] Slave resources: cpus(*):8;
>> mem(*):6900; disk(*):215925; ports(*):[31000-32000]
>>
>>
>> Any idea of what is going wrong?
>>
>>
>> Thanks
>>
>> Olivier
>>
>
> --
> Olivier Sallou
> IRISA / University of Rennes 1
> Campus de Beaulieu, 35000 RENNES - FRANCE
> Tel: 02.99.84.71.95
>
> gpg key id: 4096R/326D8438  (keyring.debian.org)
> Key fingerprint = 5FB4 6F83 D3B9 5204 6335  D26D 78DC 68DB 326D 8438
>

Re: Docker port_mapping issue

Posted by Olivier Sallou <ol...@irisa.fr>.

On 05/29/2015 02:07 PM, Olivier Sallou wrote:
> Hi,
> I can run task with success in a Docker container in my mesos install
> using base executor.
>
> However, I cannot get a task running when I add port mapping (though
> port is available).
ok, it appears that in addition to Docker port_mapping, we need to add a
port resource declaration in the task too, with something like:

                ports = task.resources.add()
                ports.name = "ports"
                ports.type = mesos_pb2.Value.RANGES
                port_range = ports.ranges.range.add()
                port_range.begin=31000
                port_range.end=31000

we kinda need to duplicate port declaration (task and docker) in task.


> I use mesos 0.22, with python 2.7.
>
>
> If I print the sent task I have:
>
> name: "task 0"
> task_id {
>   value: "0"
> }
> slave_id {
>   value: "20150526-114150-16777343-5050-2035-S0"
> }
> resources {
>   name: "cpus"
>   type: SCALAR
>   scalar {
>     value: 1
>   }
> }
> resources {
>   name: "mem"
>   type: SCALAR
>   scalar {
>     value: 128
>   }
> }
> command {
>   value: "echo \"hello world # $MESOS_SANDBOX #\""
> }
> container {
>   type: DOCKER
>   docker {
>     image: "centos"
>     network: BRIDGE
>     port_mappings {
>       host_port: 31000
>       container_port: 22
>     }
>     force_pull_image: true
>   }
> }
>
> And it ends with error:
>
> Task 0 is in state TASK_FAILED
> Abnormal executor termination
>
>
> Slave shows:
>
> I0529 13:50:49.813928 18426 docker.cpp:626] Starting container
> 'd9b5be3e-9f00-4242-aa91-d6a6f3a5175a' for task '0' (and executor '0')
> of framework '20150529-103634-16777343-5050-18179-0020'
> E0529 13:50:54.362663 18420 slave.cpp:3112] Container
> 'd9b5be3e-9f00-4242-aa91-d6a6f3a5175a' for executor '0' of framework
> '20150529-103634-16777343-5050-18179-0020' failed to start: Port
> mappings require port resources
>
> However the offer present port resources:
>
> resources {
>   name: "ports"
>   type: RANGES
>   ranges {
>     range {
>       begin: 31000
>       end: 32000
>     }
>   }
>   role: "*"
> }
>
> At slave startup I also see:
> I0529 14:05:37.481212 22455 slave.cpp:322] Slave resources: cpus(*):8;
> mem(*):6900; disk(*):215925; ports(*):[31000-32000]
>
>
> Any idea of what is going wrong?
>
>
> Thanks
>
> Olivier
>

-- 
Olivier Sallou
IRISA / University of Rennes 1
Campus de Beaulieu, 35000 RENNES - FRANCE
Tel: 02.99.84.71.95

gpg key id: 4096R/326D8438  (keyring.debian.org)
Key fingerprint = 5FB4 6F83 D3B9 5204 6335  D26D 78DC 68DB 326D 8438