LoginSignup
3
4

More than 1 year has passed since last update.

docker run / exec や docker-compose の command / entrypoint で複数コマンドを連続して実行するには? #docker

Last updated at Posted at 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

チャットメンバー募集

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

Twitter

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4