5.1 コマンドdocker execの基礎
コマンドdocker execは、実行中のコンテナとやり取りするためのツールだよ。このコマンドを使うことで、コンテナ内部でコマンドを実行したり、インタラクティブなセッションを開いたりできる。管理作業やデバッグ、モニタリングなんかに便利なんだ。この講義では、docker execコマンドの使い方、利用可能なオプション、それと実際の使用例を詳しく見ていこう。
コマンドdocker execは、起動中のコンテナ内でコマンドを実行するために使用する。これを使えば、コンテナ内に「ログイン」して、まるで直接サーバーで作業しているかのようにやり取りができるんだ。
構文
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
パラメーターの意味:
-
CONTAINER: 接続したいコンテナの名前またはID。 -
COMMAND: コンテナ内で実行したいコマンド。 ARG...: コマンドに渡す引数。
基本的な使い方の例
この例では、コンテナmy_container内でコマンドls /appを実行することで、そのコンテナ内のディレクトリ/appの内容を確認するんだ。
docker exec my_container ls /app
5.2 docker exec コマンドのパラメータ
docker exec コマンドはいくつかのオプションをサポートしており、コンテナ内でのコマンド実行の動作をカスタマイズできます。
1. インタラクティブセッションの開始
インタラクティブセッションを開始するには、オプションの組み合わせ -i (interactive) と -t (pseudo-TTY) を使用します。
docker exec -it my_container /bin/bash
この例では、コンテナ my_container 内でインタラクティブな Bash ターミナルが開かれます。これにより、リアルタイムでコマンドを実行できます。
2. 非同期モードでコマンドを実行する
コンテナ内でコマンドを実行し、その終了を待つ必要がない場合は、オプション -d (detached mode) を使用できます。
docker exec -d my_container touch /app/newfile.txt
この例では、コマンドがコンテナ my_container のディレクトリ /app に空のファイル newfile.txt を作成します。このコマンドが完了するのを待たずに、ターミナル制御がすぐに戻ります。
3. カスタム環境変数の指定
-e パラメータを使用して、コンテナに環境変数を渡すことができます。
docker exec -e MY_VAR=value my_container env
この例では、環境変数 MY_VAR をコンテナに渡し、env コマンドを実行してコンテナ内のすべての環境変数を表示します。
5.3 使用例
例 1: コンテナ内で実行中のプロセスを確認する
この例では、コンテナmy_container内でコマンドps auxを実行し、すべての実行中のプロセスのリストを表示するよ。
docker exec my_container ps aux
例 2: コンテナ内のサービスの状態をチェックする
この例では、コンテナmy_container内でコマンドservice nginx statusを実行し、nginxサービスの状態を表示するよ。
docker exec my_container service nginx status
例 3: コンテナ内でパッケージをインストールする
この例では、パッケージリストを更新し、コンテナmy_container内にエディタvimをインストールするよ。
docker exec my_container apt-get update && apt-get install -y vim
5.4 実践的なシナリオ
1. コンテナ管理
docker exec コマンドを使えば、管理者はコンテナ内で保守タスクを実行できるよ:設定ファイルを編集したり、ログを確認したり、ファイルのアクセス権を変更したり。
docker exec -it my_container vim /etc/nginx/nginx.conf
2. アプリケーションのデバッグ
アプリ開発やテストの時、docker exec コマンドを使うとアプリの状態を確認したり、デバッグしたり、エラー解析ができるよ。
docker exec -it my_container python /app/scripts/debug.py
3. モニタリングと診断
docker exec を使うと診断コマンドを実行して、コンテナの状態をチェックできるよ:リソース使用状況とか、ネットワーク接続とか、他のメトリクスとかね。
docker exec my_container top
このコマンドは my_container 内で top ユーティリティを実行して、現在のリソース使用状況を表示するよ。
5.5 追加のおすすめ
1. セキュリティの確保
docker exec コマンドを使用するときには、セキュリティを守ることが重要。コンテナへのアクセスが制限されていること、そして認証されたユーザーだけがコンテナ内でコマンドを実行できるようにしておくことが必要だよ。
2. タスクの自動化
docker exec コマンドを使ったスクリプトを活用して、日常的なタスクを自動化することができるよ。これにより、複雑なワークフローを構築したり、コンテナ管理の自動化が可能になる。
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
このスクリプトは、すべての稼働中のコンテナで uptime コマンドを実行し、それらの稼働時間を表示するよ。
3. ログとデバッグ
たまにコマンド実行がエラーで終了することがあるんだ。その場合には、コンテナのログを確認することで原因を特定するのが便利だよ。
docker logs my_container
GO TO FULL VERSION