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)