2026年5月31日
2026年5月31日
Dockerコンテナのシェルに接続する方法(exec)
はじめに
Dockerは、アプリケーションを再現可能な形態で提供し、管理するための革新的な技術です。コンテナ内では通常、実行中のプロセスに対して直接的にアクセスする手段が必要な場合があります。例えば、コンテナ内で発生したエラーメッセージを見たい、または特定のファイルシステムを確認したい等の状況が考えられます。docker execコマンドは、このような目的に最適で、コンテナ内から直接シェルに接続する手段を提供します。
症状・背景
docker execが必要になる主な場面には以下のようなものがあります:
- コンテナ内で発生したエラーメッセージを見たい
- 特定のファイルシステムやログを確認したい
- コンテナ内での問題をトラブルシュートする
- コンテナ内の実行中のプロセスを観察する
手順・設定方法
ステップ1: Dockerコンテナを確認
まず、対象のコンテナが正しく動作していることを確認します。
# コンテナのリストを表示
docker ps
# 特定のコンテナIDやコンテナ名を使って詳細情報を表示
docker inspect <コンテナIDまたはコンテナ名>
ステップ2: execコマンドでシェルに接続する
# 実行中のコンテナ内にシェルを起動
docker exec -it <コンテナIDまたはコンテナ名> /bin/bash
-iは入力としてのインタラクティブモードを指定します。-tはターミナルシミュレータ(TTY)を使用してコマンドラインに表示します。
ステップ3: 必要な操作を行う
接続すると、コンテナ内でのシェルが起動し、必要に応じてファイルを確認したり、プロセスを管理したりすることができます。
# 例:現在のディレクトリや実行中のプロセスを確認する
pwd
ps aux
# 必要なファイルを表示(例:app.log)
cat app.log
ステップ4: セッション終了
完了したら、シェルから退却します。
# ローカルのシェルに戻る
exit
注意事項
execコマンドは通常、実行中のコンテナに対してのみ使用されるべきです。新しいコンテナを起動するためには別の方法を使用すること。- 接続先となるコンテナが停止している場合は、
execコマンドはエラーを返す可能性があります。 - セキュリティ上の観点から、必要最小限のアクセス権限で実行することが推奨されます。
まとめ
1. コンテナIDまたは名前指定: docker execを使用する際には常にコンテナIDまたは名前を指定し、誤ったコンテナに接続しないように注意します。
2. インタラクティブモード: -i -tオプションを使ってシェルを起動すると、より使いやすいインタラクティブな操作が可能となります。
3. セキュリティ: 接続の安全性を考え、適切なアクセス制御を実装することが重要です。
4. ファイルシステムアクセス: 必要なファイルやログを確認する際は、その内容に注意を払って安全な操作を行いましょう。
5. セッション終了: 終了時にexitコマンドでシェルから退却することで、他のユーザーからの干渉を避けることができます。
関連記事: