auの日記

プログラミング初心者の日記。(auはハンドルネームです)

docker-composeの「run」と「exec」の違い

auです。

docker-composeで、今の頭の中で思いつく理想的な環境変更の仕方を探している際に、「run」と「exec」でコマンドを実行しているサイトを見つけました。

違いを理解していなかったので調べてみました。

run

runで起動すると、コンテナを新しく作って実行するようです。

コンテナを新しく作って実行するので、接続などがうまくできていないとエラーが起きるようです。

exec

既に起動しているコンテナを使ってコマンドを実行します。

docker-compose up -dなどをしてコンテナを立ち上げる必要があります。

違い

runはイメージ・コンテナの構築と実行を同時に行っているようです。
感覚的には

$ docker-compose up --build
$ docker-compose exec app $COMMAND

と言う感じでしょうか。

execは、コンテナが起動している状態(上記の1行目を終わらせた状態)で、上記の2行目だけを行っている感覚だと思いました。