2016-05-13 14 views
3

ドッキング・コンテナを実行すると、CMD配列の最初の要素(python実行可能ファイル)を受け取り、後続のパラメータを無視しているように見えます。Docker runコマンドENTRYPOINTが存在するときにDockerfile CMDの一部を無視する

Dockerfile:

FROM ubuntu:14.04 

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

実行]コマンド:

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

出力:私は--detach代わりの-itを実行する場合

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

同じことが起こります。私はオーバーライドドッキングウィンドウの実行パラメータとしてCMDを実行した場合

同じ

も起こる:

$ 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", "credits" or "license" for more information. 
>>> 

私はbashの入った容器を実行して、bashプロンプトからCMDを実行した場合、それが正常に動作します:

$ docker run --rm -it --volume $(pwd)/..:/mycode --volume mycontainer-virtualenv:/virtualenv mycontainer bash 
[email protected]:/# /virtualenv/bin/python /mycode/myscript.py --param1 
Hello world! 

答えて

3

おそらく

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

代わりの

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

CMDENTRYPOINTはCMDがENTRYPOINTにデフォルトパラメータとして動作しますが、両方のDockerfileに存在しています。だから、基本的にはお好きな時に

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

をやっ

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/builder/#understand-how-cmd-and-entrypoint-interact

関連する問題