🖥

docker run / exec や docker-compose の command / entrypoint で複数コマンドを連続して

2019/10/13に公開

素のdockerで試してみる。

落ちるケース。第一引数に hostname && hostname が渡され、それ全体がコマンドと評価されている?

$ docker run busybox 'hostname && hostname'
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"hostname && hostname\": executable file not found in $PATH": unknown.
ERRO[0001] error waiting for container: context canceled

成功してるかと思いきや、実はdocker コマンド自体が終了しており、実行元で2個目のコマンドが実行されてしまっているケース。

$ docker run busybox hostname && hostname
b7cebfb9e802
YumaInauranoMacBook-Air.local

bash / sh に全部渡せして 1コマンド扱いにすれば成功するっぽい。

$ docker run busybox sh -c 'hostname && hostname'
957b50b9e107
957b50b9e107

docker-compose

同じく全体を bash コマンドでくくるなどして1コマンド扱いにする必要があるっぽい。

command: bash -c 'echo "ok" && echo "ok" && echo "ok"'

こういうのはダメ。

command: echo "ok" && echo "ok"

command: bash -c echo "ok" && bash -c 'echo "ok" && echo "ok"'

yaml - Using Docker-Compose, how to execute multiple commands - Stack Overflow

sh とか ash しか入ってない場合はそちらで多分。

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2586

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-10-13

Discussion