はじめに#
Dockerは、アプリケーションの実行環境を「コンテナ」という単位で管理できる強力なツールです。本記事では、Dockerコンテナの操作に関する代表的なコマンドを、用途別に整理して解説します。各コマンドの主なオプションや使用例も併せて紹介しており、必要な操作をすばやく確認できるリファレンスとして活用いただけます。
コンテナの作成・実行#
作成と実行(run)#
コンテナを作成し、起動と同時にコマンドを実行します。最も基本的で使用頻度の高いコマンドです。
$ docker container run [オプション] {イメージ} {コマンド} {引数}
主なオプション#
オプション |
省略形 |
説明 |
--detach |
-d |
バックグラウンド(デタッチ)モードで起動する |
--env |
-e |
環境変数を設定する |
--interactive |
-i |
標準入力(STDIN)を開放する |
--tty |
-t |
擬似TTYを割り当てる |
--name |
|
コンテナ名を指定する |
--publish |
-p |
ホストとコンテナのポートをバインドする |
--rm |
|
コンテナ終了時に自動で削除する |
--volume |
-v |
ボリュームまたはバインドマウントを設定する |
使用例#
1
2
|
# 対話モードで Ubuntu コンテナを起動
$ docker container run -it --name guest ubuntu bash
|
1
2
|
# nginx をポート8080でバックグラウンド実行
$ docker container run -dit -p 8080:80 --rm --name webserver nginx
|
作成のみ(create)#
コンテナを作成しますが、起動やコマンドの実行は行いません。作成されたコンテナは「Created」状態となり、start
コマンドで起動できます。
$ docker container create [オプション] {イメージ} {コマンド} {引数}
主なオプション#
オプション |
省略形 |
説明 |
--interactive |
-i |
標準入力を開放する |
--tty |
-t |
擬似TTYを割り当てる |
--name |
|
コンテナ名を指定する |
--publish |
-p |
ポートをバインドする |
--rm |
|
終了後に自動削除する |
使用例#
1
|
$ docker container create -it --name guest ubuntu bash
|
1
|
$ docker container create -it -p 8080:80 --rm --name webserver nginx
|
起動(start)#
作成済みのコンテナを起動します。-i
オプションを使用すると、標準入力が有効になり対話操作が可能です。
$ docker container start [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--detach-keys |
|
デタッチのキーバインドを変更する |
--interactive |
-i |
対話モードで起動する |
使用例#
1
|
$ docker container start -i guest
|
コマンド実行(exec)#
実行中のコンテナ内でコマンドを実行します。ログインして手作業を行う際や、処理を追加で実行したいときに便利です。
$ docker container exec [オプション] {コンテナ} {コマンド} {引数}
主なオプション#
オプション |
省略形 |
説明 |
--detach |
-d |
バックグラウンドでコマンドを実行する |
--interactive |
-i |
標準入力を開放する |
--tty |
-t |
擬似TTYを割り当てる |
--user |
-u |
実行ユーザーを指定する |
--workdir |
-w |
作業ディレクトリを指定する |
使用例#
1
2
|
# user1としてbashを起動
$ docker container exec -it -u user1 guest bash
|
1
2
|
# /usrディレクトリでlsを実行
$ docker container exec -t -w /usr guest ls
|
アタッチ(attach)#
起動中のコンテナに接続して、標準入出力を直接やりとりします。run
や start
で -it
オプションを付けたコンテナに対して有効です。
$ docker container attach [オプション] {コンテナ}
主なオプション#
オプション |
説明 |
--detach-keys |
デタッチ時のキーバインドを変更する |
デタッチするには Ctrl-P
→ Ctrl-Q
を入力します。
使用例#
1
2
3
|
# アタッチしてから Ctrl-P → Ctrl-Q でデタッチ
$ docker container run -it -d --rm --name webserver nginx
$ docker container attach webserver
|
1
2
|
# カスタムのデタッチキーを設定
$ docker container attach --detach-keys="ctrl-a,ctrl-b" webserver
|
コンテナの監視・確認#
一覧表示(ls)#
起動中または停止中のコンテナを一覧表示します。フィルタやフォーマット指定により、表示内容を柔軟に制御できます。
$ docker container ls [オプション]
主なオプション#
オプション |
省略形 |
説明 |
--all |
-a |
起動中に限らず、すべてのコンテナを表示します |
--filter |
-f |
表示対象を条件で絞り込みます |
--format |
|
表示形式をテンプレートで指定します |
--last |
-n |
最新から指定数のコンテナを表示します |
--latest |
-l |
最も新しく作成されたコンテナのみ表示します |
--no-trunc |
|
情報を省略せずに表示します |
--quiet |
-q |
コンテナIDのみを表示します |
--size |
-s |
各コンテナのサイズ情報を表示します |
使用例#
1
|
$ docker container ls -a
|
1
|
$ docker container ls --no-trunc -aq
|
詳細表示(inspect)#
指定したコンテナの設定や状態を、JSON形式で詳細に表示します。テンプレートを使って特定の項目を抽出することも可能です。
$ docker container inspect [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--format |
-f |
表示内容をGoテンプレートでカスタマイズします |
--size |
-s |
サイズ情報を含めて表示します |
使用例#
1
|
$ docker container inspect --format "{{json .Config.Image}}" guest
|
1
|
$ docker container inspect -s --format "{{.SizeRw}}, {{.SizeRootFs}}" guest
|
ログ確認(logs)#
コンテナの標準出力および標準エラー出力に出力されたログを確認できます。継続的な監視や時刻指定によるフィルタリングも可能です。
$ docker container logs [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--details |
|
ログに付随する詳細情報を表示します |
--follow |
-f |
リアルタイムでログを追尾表示します |
--since |
|
指定時刻以降のログを表示します |
--tail |
-n |
直近のログ行数を指定します |
--timestamp |
-t |
各ログにタイムスタンプを付けます |
--until |
|
指定時刻までのログを表示します |
使用例#
1
|
$ docker container logs -t --since="2024-01-28T12:15:40Z" webserver
|
1
|
$ docker container logs -f webserver > webserver.log
|
プロセス確認(top)#
コンテナ内で実行されているプロセスを表示します。コンテナが起動中である必要があります。
$ docker container top {コンテナ}
使用例#
1
|
$ docker container top guest
|
リソース監視(stats)#
コンテナのCPU、メモリ、ネットワーク、ディスクI/Oの使用状況をリアルタイムに表示します。複数コンテナを同時に監視できます。
$ docker container stats [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--all |
-a |
停止中のコンテナも含めて表示します |
--format |
|
表示形式をカスタマイズします |
--no-stream |
|
1回のみ表示して終了します |
--no-trunc |
|
情報の省略を行わずに表示します |
使用例#
1
|
$ docker container stats --no-stream
|
ポート表示(port)#
コンテナ内のポートがホストにどのようにバインドされているかを確認できます。
$ docker container port {コンテナ}
使用例#
1
|
$ docker container port webserver
|
変更確認(diff)#
コンテナ内のファイルシステムに対して行われた変更を確認できます。
$ docker container diff {コンテナ}
出力記号の意味は次の通りです:
A
: 追加、D
: 削除、C
: 変更
使用例#
1
|
$ docker container diff guest
|
コンテナの監視・確認#
一覧表示(ls)#
起動中または停止中のコンテナを一覧表示します。フィルタやフォーマット指定により、表示内容を柔軟に制御できます。
$ docker container ls [オプション]
主なオプション#
オプション |
省略形 |
説明 |
--all |
-a |
起動中に限らず、すべてのコンテナを表示します |
--filter |
-f |
表示対象を条件で絞り込みます |
--format |
|
表示形式をテンプレートで指定します |
--last |
-n |
最新から指定数のコンテナを表示します |
--latest |
-l |
最も新しく作成されたコンテナのみ表示します |
--no-trunc |
|
情報を省略せずに表示します |
--quiet |
-q |
コンテナIDのみを表示します |
--size |
-s |
各コンテナのサイズ情報を表示します |
使用例#
1
|
$ docker container ls -a
|
1
|
$ docker container ls --no-trunc -aq
|
詳細表示(inspect)#
指定したコンテナの設定や状態を、JSON形式で詳細に表示します。テンプレートを使って特定の項目を抽出することも可能です。
$ docker container inspect [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--format |
-f |
表示内容をGoテンプレートでカスタマイズします |
--size |
-s |
サイズ情報を含めて表示します |
使用例#
1
|
$ docker container inspect --format "{{json .Config.Image}}" guest
|
1
|
$ docker container inspect -s --format "{{.SizeRw}}, {{.SizeRootFs}}" guest
|
ログ確認(logs)#
コンテナの標準出力および標準エラー出力に出力されたログを確認できます。継続的な監視や時刻指定によるフィルタリングも可能です。
$ docker container logs [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--details |
|
ログに付随する詳細情報を表示します |
--follow |
-f |
リアルタイムでログを追尾表示します |
--since |
|
指定時刻以降のログを表示します |
--tail |
-n |
直近のログ行数を指定します |
--timestamp |
-t |
各ログにタイムスタンプを付けます |
--until |
|
指定時刻までのログを表示します |
使用例#
1
|
$ docker container logs -t --since="2024-01-28T12:15:40Z" webserver
|
1
|
$ docker container logs -f webserver > webserver.log
|
プロセス確認(top)#
コンテナ内で実行されているプロセスを表示します。コンテナが起動中である必要があります。
$ docker container top {コンテナ}
使用例#
1
|
$ docker container top guest
|
リソース監視(stats)#
コンテナのCPU、メモリ、ネットワーク、ディスクI/Oの使用状況をリアルタイムに表示します。複数コンテナを同時に監視できます。
$ docker container stats [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--all |
-a |
停止中のコンテナも含めて表示します |
--format |
|
表示形式をカスタマイズします |
--no-stream |
|
1回のみ表示して終了します |
--no-trunc |
|
情報の省略を行わずに表示します |
使用例#
1
|
$ docker container stats --no-stream
|
ポート表示(port)#
コンテナ内のポートがホストにどのようにバインドされているかを確認できます。
$ docker container port {コンテナ}
使用例#
1
|
$ docker container port webserver
|
変更確認(diff)#
コンテナ内のファイルシステムに対して行われた変更を確認できます。
$ docker container diff {コンテナ}
出力記号の意味は次の通りです:
A
: 追加、D
: 削除、C
: 変更
使用例#
1
|
$ docker container diff guest
|
コンテナのメンテナンス#
削除(rm)#
停止中のコンテナを削除します。実行中のコンテナは削除できませんが、--force
オプションを指定することで強制的に削除できます。
$ docker container rm [オプション] {コンテナ}
主なオプション#
オプション |
省略形 |
説明 |
--force |
-f |
実行中のコンテナも強制的に削除します |
使用例#
1
|
$ docker container rm guest
|
一括削除(prune)#
すべての停止中コンテナを一括で削除します。不要なコンテナをまとめて掃除したいときに便利です。
$ docker container prune [オプション]
主なオプション#
オプション |
省略形 |
説明 |
--filter |
|
削除対象を条件で絞り込みます |
--force |
-f |
確認プロンプトを表示せずに実行します |
使用例#
1
|
$ docker container prune
|
名前変更(rename)#
コンテナの名前を変更します。稼働中のコンテナにも適用可能です。
$ docker container rename {旧コンテナ名} {新コンテナ名}
使用例#
1
|
$ docker container rename guest guest00
|
イメージ作成(commit)#
指定したコンテナの状態をもとに新しいイメージを作成します。変更を一時的に保存しておきたい場合などに便利です。
$ docker container commit [オプション] {コンテナ} {イメージ名}
主なオプション#
オプション |
省略形 |
説明 |
--author |
-a |
作成者情報を設定します |
--message |
-m |
イメージにコメントを追加します |
--change |
-c |
Dockerfile命令を適用します(例:CMD , ENV など) |
--pause |
-p |
作成中にコンテナを一時停止します(デフォルトはtrue) |
使用例#
1
|
$ docker container commit -a "user" -m "Initial image" guest myimage:latest
|
ファイルコピー(cp)#
ホストとコンテナ間でファイルやディレクトリをコピーします。双方向に対応しています。
$ docker container cp [オプション] {コピー元} {コピー先}
主なオプション#
オプション |
省略形 |
説明 |
--archive |
-a |
所有者情報やパーミッションを保持してコピーします |
--follow-link |
-L |
シンボリックリンクを追跡します |
--quiet |
-q |
コピー時の出力を抑制します |
使用例#
1
2
3
4
5
|
# ホスト → コンテナ
$ docker container cp test.txt guest:/test.txt
# コンテナ → ホスト
$ docker container cp guest:/test.txt test2.txt
|
おわりに#
本記事では、Dockerコンテナの操作に関する主要なコマンドを、「作成・実行」「監視・確認」「制御」「メンテナンス」という4つのカテゴリに分けて整理しました。それぞれのコマンドについて、用途や主なオプション、実行例を交えて解説しています。
Dockerは柔軟で強力なツールですが、コマンドの種類が多く、初学者にとっては混乱しやすい面もあります。本記事が、日々の開発や学習において、必要な操作を素早く確認できるリファレンスとしてお役に立てば幸いです。
今後も自身の環境やワークフローに合わせて、必要なコマンドを習得・活用していってください。