基本コマンド
バージョン確認
Dockerが正しくインストールされているか確認したい時、または問題報告時にバージョン情報が必要な時に使います。
# Dockerのバージョン確認
docker --version
# 詳細情報の表示
docker version
# システム全体の情報
docker info
イメージ操作
イメージの取得・確認
Docker Hubから必要なイメージをダウンロードする時、またはローカルにどんなイメージがあるか確認したい時に使います。
# イメージをダウンロード
docker pull <イメージ名>:<タグ>
docker pull node:18
docker pull postgres:15
# イメージ一覧を表示
docker images
# イメージの詳細情報
docker inspect <イメージID>
イメージのビルド
Dockerfileから自分のアプリケーションのイメージを作成する時に使います。ビルドがうまくいかない時はキャッシュをクリアしてみましょう。
# Dockerfileからイメージをビルド
docker build -t <イメージ名>:<タグ> .
docker build -t myapp:1.0 .
# キャッシュを使わずビルド
docker build --no-cache -t myapp:1.0 .
イメージの削除
ディスク容量を空けたい時や、古いイメージを削除したい時に使います。使っていないイメージが溜まるとディスクを圧迫します。
# イメージを削除
docker rmi <イメージID>
# 使っていないイメージを全て削除
docker image prune
# 全てのイメージを削除
docker rmi $(docker images -q)
コンテナ操作
コンテナの起動
アプリケーションを実際に動かす時に使います。通常は docker compose を使いますが、単一コンテナを素早く起動したい時はこちらを使います。
# コンテナを起動
docker run <イメージ名>
# バックグラウンドで起動
docker run -d <イメージ名>
# ポートをマッピングして起動
docker run -p <ホスト>:<コンテナ> <イメージ名>
docker run -p 3000:3000 myapp
# 名前をつけて起動
docker run --name mycontainer myapp
# 環境変数を設定して起動
docker run -e KEY=value myapp
# ボリュームをマウント
docker run -v /host/path:/container/path myapp
コンテナの確認
今どのコンテナが動いているか確認したい時、またはコンテナの詳細情報を見たい時に使います。
# 起動中のコンテナ一覧
docker ps
# 全てのコンテナ一覧(停止中も含む)
docker ps -a
# コンテナの詳細情報
docker inspect <コンテナID>
コンテナの停止・削除
作業を終える時や、コンテナをクリーンな状態から再起動したい時に使います。停止中のコンテナが溜まるとディスクを使うので定期的に削除しましょう。
# コンテナを停止
docker stop <コンテナID>
# コンテナを強制停止
docker kill <コンテナID>
# コンテナを削除
docker rm <コンテナID>
# 停止中のコンテナを全て削除
docker container prune
# 全てのコンテナを停止
docker stop $(docker ps -q)
# 全てのコンテナを削除
docker rm $(docker ps -aq)
コンテナ内での操作
コンテナ内でデバッグしたい時、ログを確認したい時、またはコマンドを実行したい時に使います。
# コンテナ内でコマンド実行
docker exec <コンテナID> <コマンド>
# コンテナ内に入る(bash)
docker exec -it <コンテナID> bash
# コンテナ内に入る(sh)
docker exec -it <コンテナID> sh
# コンテナのログを表示
docker logs <コンテナID>
# ログをリアルタイムで表示
docker logs -f <コンテナID>
Docker Compose
基本操作
実務で最もよく使うコマンドです。プロジェクトを受け取ったらまず
docker compose up -d で起動、作業終了時は
docker compose down で停止します。
# コンテナを起動(フォアグラウンド)
docker compose up
# コンテナを起動(バックグラウンド)
docker compose up -d
# 特定のサービスのみ起動
docker compose up <サービス名>
# ビルドしてから起動
docker compose up --build
# コンテナを停止
docker compose down
# コンテナを停止してボリュームも削除
docker compose down -v
サービスの管理
エラーが出た時はまずログを確認。コンテナ内でコマンドを実行したい時は exec を使います。
# サービスの一覧表示
docker compose ps
# ログを表示
docker compose logs
# 特定サービスのログを表示
docker compose logs <サービス名>
# ログをリアルタイムで表示
docker compose logs -f
# サービスを再起動
docker compose restart
# サービス内でコマンド実行
docker compose exec <サービス名> <コマンド>
# サービス内に入る
docker compose exec <サービス名> bash
ビルドとクリーンアップ
Dockerfileを変更した時や、うまく動かない時はイメージを再ビルドします。キャッシュが原因の場合は --no-cache を使いましょう。
# イメージをビルド
docker compose build
# キャッシュを使わずビルド
docker compose build --no-cache
# 停止したコンテナを削除
docker compose rm
ボリューム操作
ボリュームの管理
データベースのデータなど、永続化したいデータを管理します。コンテナを削除してもボリュームは残るため、不要になったら手動で削除する必要があります。
# ボリューム一覧を表示
docker volume ls
# ボリュームを作成
docker volume create <ボリューム名>
# ボリュームの詳細情報
docker volume inspect <ボリューム名>
# ボリュームを削除
docker volume rm <ボリューム名>
# 使っていないボリュームを削除
docker volume prune
ネットワーク操作
ネットワークの管理
コンテナ間の通信設定を管理します。通常は docker-compose.yml で自動的に作成されますが、手動で設定が必要な場合に使います。
# ネットワーク一覧を表示
docker network ls
# ネットワークを作成
docker network create <ネットワーク名>
# ネットワークの詳細情報
docker network inspect <ネットワーク名>
# ネットワークを削除
docker network rm <ネットワーク名>
# 使っていないネットワークを削除
docker network prune
システムクリーンアップ
まとめて削除
ディスク容量が逼迫してきた時に実行します。不要なコンテナ、イメージ、ボリュームをまとめて削除できます。
# 停止中のコンテナ、未使用のネットワーク、
# dangling イメージ、ビルドキャッシュを削除
docker system prune
# ボリュームも含めて削除
docker system prune -a --volumes
# 全てを強制削除(確認なし)
docker system prune -a -f
ディスク使用量確認
Dockerがどれくらいディスク容量を使っているか確認したい時に使います。クリーンアップの前に実行すると良いでしょう。
# ディスク使用量を表示
docker system df
# 詳細表示
docker system df -v
よく使う組み合わせ
開発時の基本フロー
毎日の開発で使う基本的な流れです。朝はこれで起動、夜はこれで停止します。
# 1. プロジェクトを受け取ったら
docker compose up -d
# 2. ログを確認
docker compose logs -f
# 3. コンテナ内に入る
docker compose exec web bash
# 4. 作業終了時
docker compose down
トラブル時のリセット
何か変な動作をする時、クリーンな状態から再起動したい時に使います。データも消したい場合は -v オプションを付けます。
# 全て停止して削除(ボリュームも削除)
docker compose down -v
# キャッシュなしで再ビルド
docker compose build --no-cache
# 再起動
docker compose up -d
データベースのリセット
データベースの中身を初期状態に戻したい時に使います。開発中にテストデータを入れすぎた時などに便利です。
# DBコンテナのみ停止・削除
docker compose stop db
docker compose rm db
# ボリュームを削除
docker volume rm <プロジェクト名>_<ボリューム名>
# 再起動
docker compose up -d db
便利なエイリアス
毎回長いコマンドを打つのは面倒なので、以下のエイリアスを
~/.bashrc または
~/.zshrc に追加しておくと便利です。例えば
dc と入力するだけで
docker compose が実行できるようになります。
# Docker
alias d='docker'
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcl='docker compose logs -f'
alias dce='docker compose exec'
# よく使うコマンド
alias dps='docker ps'
alias dpsa='docker ps -a'
alias di='docker images'
# クリーンアップ
alias dprune='docker system prune -a'
alias dstop='docker stop $(docker ps -q)'
エイリアスの使い方
エイリアスを追加した後は、以下のコマンドで設定を反映させます。
# bashの場合
source ~/.bashrc
# zshの場合
source ~/.zshrc
# または、ターミナルを再起動
エイリアスの使用例
エイリアスを設定すると、以下のように短いコマンドで実行できます。
# 従来のコマンド → エイリアス使用後
# コンテナを起動
docker compose up -d → dcu
# コンテナを停止
docker compose down → dcd
# ログをリアルタイム表示
docker compose logs -f → dcl
# コンテナ内に入る
docker compose exec web bash → dce web bash
# 起動中のコンテナ一覧
docker ps → dps
# 全てのコンテナ一覧
docker ps -a → dpsa
# イメージ一覧
docker images → di
デバッグ用コマンド
コンテナの状態確認
コンテナが重い、または異常な動作をしている時に使います。CPUやメモリの使用状況、実行中のプロセスを確認できます。
# CPUとメモリの使用状況
docker stats
# プロセス一覧
docker top <コンテナID>
# コンテナの変更内容を確認
docker diff <コンテナID>
# ポートマッピングを確認
docker port <コンテナID>
ネットワーク診断
コンテナ間の通信がうまくいかない時、ネットワーク設定を確認したい時に使います。
# コンテナ内でpingテスト
docker exec <コンテナID> ping <ホスト名>
# コンテナのIPアドレスを確認
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <コンテナID>