docker exec の使い方

動いているコンテナで実行

書き方

docker exec コンテナ コマンド
docker exec -it コンテナ sh
docker exec -e KEY=値 -w ディレクトリ -u ユーザー コンテナ コマンド

動いているコンテナの中でコマンドを実行します。-it で中のシェルに入り、exit で戻ります(コンテナは動いたまま)。

よく使うオプション

オプション意味
-itキーボードをつないで端末として操作する(シェルに入るとき)
-e KEY=値そのコマンドにだけ環境変数を渡す
-w ディレクトリコマンドを動かすディレクトリ
-u ユーザー動かすユーザー(-u 0 で root)
-d裏で動かす

例

$ docker exec -it web sh

動いている web の中のシェルに入ります。exit で抜けてもコンテナは動いたままです。

$ docker exec web cat /etc/nginx/conf.d/default.conf

中に入らずに、コマンドを 1 つだけ動かして結果を見ます。

$ docker exec -it db psql -U postgres

PostgreSQL のコンテナの中で psql を動かし、データベースに入ります。

$ docker exec -u 0 -it app sh

root で中に入ります。イメージがふだん一般ユーザーで動いているときに、調べものをするのに使います。

よくある間違い・注意

  • 止まっているコンテナには exec できません(「is not running」)。先に docker start するか、docker run で別に動かします。
  • alpine など小さなイメージには bash が入っていません。sh を使います。
  • exec の中で変えたことは、コンテナを作り直すと消えます。残したい変更は Dockerfile に書きます。

実際に打って練習する

Docker コースの Lv11「小舟に乗り込む docker exec」で覚えます(第1章 はじめてのコンテナ)。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

Docker コマンド一覧(使い方と例)へ戻る