Hi,
I'm trying to run a Docker image which has a defined entrypoint and pass
args to it. It looks like when the args are passed to docker run, they
are surrounded by single quotes.
The image I am trying to run is tomaskral/chronos, and this is the
configuration I am giving to Marathon:
{
"id": "chronos-test-2",
"container": {
"docker": {
"image": "tomaskral/chronos",
"network": "BRIDGE",
"portMappings": [
{
"containerPort": 8080,
"hostPort": 0,
"servicePort": 31000,
"protocol": "tcp"
}
]
},
"type": "DOCKER",
"volumes": []
},
"ports":[31000],
"args": ["--master zk://...:2181/mesos --zk_hosts zk:/...:2181"],
"cpus": 0.2,
"mem": 256.0,
"instances": 1
}
And this is an extract from the log from Mesos when the image is ran:
+ logged chronos run_jar '--master zk://...:2181/mesos --zk_hosts
zk://...:2181'
The argument has single quotes around it. run_jar is calling java, which
cannot handle the quotes, and the process isn't starting.
If I run the image locally with docker run like this, it works:
docker run -p 8080:8080 tomaskral/chronos --master zk://...:2181/mesos
--zk_hosts zk://...:2181
But adding quotes, like this, and I get the same output as I did from
Mesos:
docker run -p 8080:8080 tomaskral/chronos '--master zk://...:2181/mesos
--zk_hosts zk://...:2181'
So I think these quotes are being added by either Marathon or Mesos when
calling docker run, which the java command inside the container can't
handle.
Is it Mesos or Marathon adding the quotes? Is this something that should
be fixed, or should the docker images expect this and cope?
This is Mesos 0.21.1 and Marathon 0.7.3. I have also asked the author of
the image for help (https://github.com/kadel/Dockerfiles/issues/3).
Thanks,
Andrew