You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@mesos.apache.org by "Gilbert Song (JIRA)" <ji...@apache.org> on 2018/01/26 22:11:00 UTC

[jira] [Comment Edited] (MESOS-8497) Docker parameter `name` does not work with Docker Containerizer.

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

Gilbert Song edited comment on MESOS-8497 at 1/26/18 10:10 PM:
---------------------------------------------------------------

The root cause is here: [https://github.com/apache/mesos/blob/1.5.0-rc1/src/docker/docker.cpp#L1083~#L1090]

We define the name before the parameters, so the user defined `–name` from the parameters will overwrite the name Mesos gives to the docker container (background: Mesos relies on --name to identify docker containers, the docker container is named by Mesos as `mesos<ContainerUUID>`). So any new names passed into the parameters will result in Mesos could no longer find this container.

Two solutions:
1. Validate the parameters in master::validate(), to make sure no --name exists in docker arbitrary parameters.
2. Return failure on docker containerizer if the name is overwritten by any other.

#1 might be a preferable and straight forward solution.


was (Author: gilbert):
The root cause is here: [https://github.com/apache/mesos/blob/1.5.0-rc1/src/docker/docker.cpp#L1083~#L1090]

We define the name before the parameters, so the user defined `–name` from the parameters will overwrite the name Mesos gives to the docker container (background: Mesos relies on --name to identify docker containers, the docker container is named by Mesos as `mesos-<ContainerUUID>`). So any new names passed into the parameters will result in Mesos could no longer find this container.

Two solutions:
1. Validate the parameters in master::validate(), to make sure no --name exists in docker arbitrary parameters.
2. Return failure on docker containerizer if the name is overwritten by any other.

#1 might be a preferable and straight forward solution.

> Docker parameter `name` does not work with Docker Containerizer.
> ----------------------------------------------------------------
>
>                 Key: MESOS-8497
>                 URL: https://issues.apache.org/jira/browse/MESOS-8497
>             Project: Mesos
>          Issue Type: Bug
>          Components: containerization
>            Reporter: Jörg Schad
>            Priority: Major
>              Labels: containerizer
>         Attachments: agent.log, master.log
>
>
> When deploying a marathon app with Docker Containerizer (need to check Mesos Containerizer) and the parameter name set, Mesos is not able to recognize/control/kill the started container.
> Steps to reproduce 
>  # Deploy the below marathon app definition
>  #  Watch task being stuck in staging and mesos not being able to kill it
>  # Check on node and see container running, but not being recognized by mesos
> {noformat}
> {
> "id": "/docker-test",
> "instances": 1,
> "portDefinitions": [],
> "container": {
> "type": "DOCKER",
> "volumes": [],
> "docker": {
> "image": "ubuntu:16.04",
> "parameters": [
> {
> "key": "name",
> "value": "myname"
> }
> ]
> }
> },
> "cpus": 0.1,
> "mem": 128,
> "requirePorts": false,
> "networks": [],
> "healthChecks": [],
> "fetch": [],
> "constraints": [],
> "cmd": "sleep 1000"
> }
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)