1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:Dockerユーザーなら知っておきたい「docker exec」の実用テクニックをまとめて実際に使ってみた

Last updated at Posted at 2025-02-13

はじめに

docker exec は、実行中のコンテナ内でコマンドを実行できる便利なコマンドです。

コンテナのシェルに入ったり、特定のスクリプトを実行したりする際に役立ちます。

コンテナを再起動せずにデバッグや設定変更ができるため、開発や運用の効率が向上します。

本記事では、docker exec の基本的な使い方やオプションについて解説します。

書こうと思ったきっかけ

Docker を使用していると、実行中のコンテナ内でコマンドを実行したい場面が多々あります。

例えば、ログを確認したり、設定ファイルを編集したりする際に、簡単にコンテナへアクセスできる方法が必要です。

docker exec はそのような場面で役立つため、基本的な使い方をまとめることにしました。

Docker exec とは?

docker exec コマンドは、すでに実行中のコンテナ内でコマンドを実行するためのコマンドです。

コンテナのシェルに入る、特定のスクリプトを実行するなどの用途で使用されます。

このコマンドを利用することで、コンテナを再起動せずに設定の変更やデバッグを行うことができます。

基本構文

docker exec [オプション] コンテナ名(またはID) コマンド

よく使うオプション

オプション 説明
-it インタラクティブモード(標準入力を開く + TTYを有効化)
-d デタッチモード(バックグラウンド実行)
-u ユーザー名 特定のユーザーで実行する

使用例

1. コンテナ内のシェルに入る

docker exec -it my_container /bin/sh

実際のコマンド画面

Screenshot 2025-02-13 at 9.48.17.png

または、コンテナがUbuntuやDebianベースなら

docker exec -it my_container /bin/bash

実際のコマンド画面

Screenshot 2025-02-13 at 9.49.00.png

my_container のシェルを開き、対話的に操作できるようになります。

2. コンテナ内で特定のコマンドを実行

docker exec my_container ls -l

実際のコマンド画面

Screenshot 2025-02-13 at 9.50.36.png

my_container 内で ls -l を実行し、結果をホスト側に出力します。

3. コンテナ内のファイルを確認

docker exec my_container cat /etc/os-release

実際のコマンド画面

Screenshot 2025-02-13 at 9.51.51.png

my_container 内の /etc/os-release を表示し、OSの情報を確認できます。

4. root ユーザーでコマンドを実行

docker exec -u root -it my_container bash

実際のコマンド画面

Screenshot 2025-02-13 at 9.59.11.png

→ root権限でコンテナ内のシェルを開きます。

5. バックグラウンドで実行

docker exec -d my_container touch /tmp/testfile

my_container 内で /tmp/testfile を作成し、バックグラウンドで実行。

6. 環境変数を設定してコマンドを実行

docker exec -e MY_VAR=value my_container env

MY_VAR=value を環境変数として設定し、コンテナ内で env コマンドを実行。

注意点

  1. コンテナが起動している必要がある
    docker execすでに実行中のコンテナ に対してコマンドを実行するため、停止中のコンテナには使えません。停止中のコンテナに対して実行したい場合は、docker start で起動する必要があります。

  2. 対話型シェルを開く場合は -it を忘れずに
    -it をつけないと、シェルの入力がうまく動作しないことがあります。

  3. コンテナの ENTRYPOINTCMD に影響を与えない
    docker exec で実行したコマンドは、コンテナの ENTRYPOINTCMD とは無関係に動作します。

関連コマンド

コマンド 用途
docker ps 実行中のコンテナ一覧を表示
docker inspect <コンテナ名> コンテナの詳細情報を取得
docker logs <コンテナ名> コンテナのログを表示
docker attach <コンテナ名> 実行中のコンテナにアタッチ
docker start <コンテナ名> 停止しているコンテナを起動
docker stop <コンテナ名> コンテナを停止

まとめ

  • docker exec実行中のコンテナ内でコマンドを実行するために使う
  • -it オプションを付けると、対話的にシェルを操作できる
  • -u root で特定のユーザーとして実行可能
  • -e オプションを使うと環境変数を指定できる
  • コンテナが起動中でないと使えない

実際に試して、コンテナの操作をスムーズに行いましょう!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?