docker compose run

説明

サービスを一度限りのコマンドとして実行します。

使い方

$ docker compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...]

補足説明

サービスを一度限りのコマンド実行します。

以下のコマンドは、 web サービスを開始し、コマンドとしての bash を実行します。

$ docker compose run web bash

新しいコンテナ内で実行されるコマンドは、設定によって定義されたサービス、ボリューム、リンク、その他と共に起動します。しかしながら、2つの重要な点が異なります。

第1に、 run を指定すると、サービス設定で定義済みのコマンドを上書きします。たとえば、 web サービスの起動が bash に設定されていても、 docker compose run web python app.py によって python app.py に上書きされます。

第2の違いは、 docker compose run コマンドではサービス設定で定義したポートを作成しません。これにより、既に開いているポートとの衝突を防ぎます。もしもサービス用のポートを作成し、ホストにマッピングしたければ、 --service-ports を指定します。

$ docker compose run --service-ports web python manage.py shell

あるいは、docker run を使う時に --publish-p オプションを指定し、手動でポートの割り当てもできます。

$ docker compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell

リンク設定があるサービスを起動する場合には、run 命令は、まずリンクしたサービスが実行中かどうかを確認し、サービスが停止中の場合は起動します。リンクしているサービスがすべて実行中になれば、指定したコマンドの処理を実行します。以下の例のように実行できます。

$ docker compose run db psql -h db -U docker

これは、 db コンテナにリンクしているインタラクティブな PostgreSQL シェルを開きます。

リンクしたコンテナを開始せずに run 命令を実行したい場合は、 --no-deps フラグを使います。

$ docker compose run --no-deps web python manage.py shell

コンテナの再起動ポリシーを上書きし、実行後にコンテナを削除したい場合は、 --rm フラグを使います。

$ docker compose run --rm web python manage.py db upgrade

サービス設定で再起動ポリシーが定義されていても、これはデータベース更新スクリプトを実行し、処理完了後にコンテナを削除します。

オプション

名前, 省略形

デフォルト

説明

--detach , -d

コンテナをバックグランドで実行し、コンテナ ID を表示

--entrypoint

イメージの entrypoint を上書き

--env , -e

環境変数を設定

--labels , -l

ラベルを追加もしくは上書き

--name

コンテナに名前を割り当て

--no-TTY , -T

疑似 TTY の割当を無効化。デフォルトの docker compose run は TTY を割り当て

--no-deps

リンクしたサービスを起動しない

--publish , -p

ホスト上にコンテナのポートを公開

--rm

終了時、対象のコンテナを自動削除

--use-aliases

コンテナが接続するネットワークに、サービスのネットワーク useAliases を使用

--user , -u

指定したユーザ名や uid で実行

--volume , -v

ボリュームをバインド・マウントする

--workdir , -w

コンテナ内の作業ディレクトリ

親コマンド

コマンド

説明

docker

Docker CLI のベースコマンド。

関連コマンド

コマンド

説明

docker compose build

サービスの構築もしくは再構築

docker compose convert

compose ファイルをプラットフォーム固有の形式に変換

docker compose cp

サービス・コンテナとローカル・ファイルシステム間でファイルやフォルダをコピー

docker compose create

サービス用のコンテナを作成

docker compose down

コンテナやネットワークの停止と削除

docker compose events

コンテナからリアルタイムにイベントを受信

docker compose exec

実行中のコンテナ内でコマンドを実行

docker compose images

作成したコンテナが使っているイメージを一覧表示

docker compose kill

サービスコンテナを強制停止

docker compose logs

コンテナからの出力を表示

docker compose ls

実行中の compose プロジェクトを一覧表示

docker compose pause

サービスの一時停止

docker compose port

ポートを確保している公開ポートを表示

docker compose ps

コンテナを一覧表示

docker compose pull

サービスのイメージを取得

docker compose push

サービスのイメージを送信

docker compose restart

コンテナの再起動

docker compose rm

停止済みのサービス・コンテナを削除

docker compose run

サービスを一度限りのコマンドとして実行

docker compose start

サービスの開始

docker compose stop

サービスの停止

docker compose top

実行中のプロセスを表示

docker compose unpause

サービスの一時停止を解除

docker compose up

コンテナの作成と開始