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 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。