Docker ejecuta el command ignorando parte de Dockerfile CMD cuando ENTRYPOINT presenta

Cuando ejecuto mi contenedor de docker, parece que solo respeta el primer elemento de la matriz de CMD (ejecutable de Python) y hace caso omiso de los parameters finales.

Dockerfile:

FROM ubuntu:14.04 ENTRYPOINT ["/bin/bash", "-c"] CMD ["/virtualenv/bin/python", "/mycode/myscript.py", "--param1"] 

Ejecutar command:

 $ docker run --rm -it --volume $(pwd)/..:/mycode --volume mycontainer-virtualenv:/virtualenv mycontainer 

Salida:

 Python 3.4.3 (default, Oct 14 2015, 20:28:29) [GCC 4.8.4] on linux Type "help", "copyright", "cnetworkingits" or "license" for more information. >>> 

Lo mismo sucede si ejecuto --detach lugar de -it .

Lo mismo ocurre si ejecuto con el CMD como un parámetro de ejecución de portón anulador:

 $ docker run --rm -it --volume $(pwd)/..:/mycode --volume mycontainer-virtualenv:/virtualenv mycontainer /virtualenv/bin/python /mycode/myscript.py --param1 Python 3.4.3 (default, Oct 14 2015, 20:28:29) [GCC 4.8.4] on linux Type "help", "copyright", "cnetworkingits" or "license" for more information. >>> 

Si ejecuto el contenedor con bash y ejecuto el CMD desde el prompt bash, funciona bien:

 $ docker run --rm -it --volume $(pwd)/..:/mycode --volume mycontainer-virtualenv:/virtualenv mycontainer bash root@d6a990e81c22:/# /virtualenv/bin/python /mycode/myscript.py --param1 Hello world! 

Probablemente quieras

 CMD ["/virtualenv/bin/python /mycode/myscript.py --param1"] 

en lugar de

 CMD ["/virtualenv/bin/python", "/mycode/myscript.py", "--param1"] 

Cuando CMD y ENTRYPOINT están presentes en Dockerfile, CMD funciona como parameters por defecto en ENTRYPOINT. Entonces básicamente haces

 bash -c "/virtualenv/bin/python" "/mycode/myscript.py" "--param1" 

cuando quieres

 bash -c "/virtualenv/bin/python /mycode/myscript.py --param1" 

https://docs.docker.com/engine/reference/builder/#cmd https://docs.docker.com/engine/reference/builder/#entrypoint https://docs.docker.com/engine/reference/ constructor / # understand-how-cmd-and-entrypoint-interact