web-dev-qa-db-ja.com

Docker CMDのコマンドライン引数

Docker CMDにパラメーターを渡します。たとえば、Dockerfileの内容が

FROM ubuntu:15.04
CMD ["/bin/bash", "-c", "cat", "$1"]

次に、次のように実行します。

docker build -t cat_a_file .
docker run -v `pwd`:/data cat_a_file /data/Dockerfile

Dockerfileの内容を画面に出力したいと思います。しかし、代わりに、Dockerは/data/DockerfileCMDをオーバーライドする必要があるスクリプトで、エラーが発生します

Error response from daemon: Cannot start container 7cfca4: 
[8] System error: exec: "/data/Dockerfile": permission denied

どうすればこれを回避できますか?

21
user14717

このようなものにはENTRYPOINTを使用します。 CMDパラメーターは、指定されたENTRYPOINTに追加されます。

そのため、Dockerfileを次のように更新すると:

FROM ubuntu:15.04
ENTRYPOINT ["/bin/bash", "-c", "cat"]

物事はあなたが望むように動作するはずです。

また、$1は不要なので、次のように変更できるはずです。

FROM ubuntu:15.04
ENTRYPOINT ["/bin/cat"]

私はこれをテストしていないので、うまくいかない場合はお知らせください。

25
Adrian Mouat