4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker Composeを使う際のコマンドrunとexecの違い

Posted at

概要

docker composeのコマンドでrunexecの違いが曖昧だったためメモ用に残しておきます。
docker composeについて詳しく知りたい場合は下記公式ドキュメント参照。
Docker Compose公式ドキュメント

docker composeのrun、 execコマンドとは

runexecコマンドの用途はどちらも同じです。
コンテナに対してコマンドを実行したいときに使用するコマンドです。
下記のように実行します。

docker-compose run サービス名 実行したいコマンド
or
docker-compose exec サービス名 実行したいコマンド

ちなみにコマンドで出てくるサービス名は、docker-compose.ymlで指定したサービス名です。
docker-compose.ymlの記載方法はここでは割愛します。

コマンド入力例

例えば、backendというサービス名のRuby on Railsのコンテナに対して下記のようにコマンドを実行できます。

docker-compose run backend rails db:migrate
or
docker-compose exec backend rails db:migrate

run、execコマンドの違い

run → __新たにコンテナを立ち上げて__入力したコマンドを実行。
exec → __起動中のコンテナに対して__入力したコマンドを実行。

runコマンドを使う際のTips

runコマンドは新たにコンテナを立ち上げるので、その都度rmコマンドやpruneコマンドでコンテナを削除しないと容量を圧迫することになります。
いちいちコマンド実行するのが面倒なので、runコマンドを実行する際にオプションで--rmを渡してあげるとコマンド実行後はそのままコンテナを削除してくれます。

docker-compose run --rm サービス名 実行したいコマンド

まとめ

runexecのどちらを使用するかですが、個人的にはrunを使用します。
なぜならexecはコンテナを起動しておかないといけないからです。

4
3
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
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?