PR

[備忘録]よく使うDockerのコマンド

備忘録

Docker を使った開発やデプロイでよく使用するコマンドをまとめました。忘れがちなオプションや使い分けも含めて整理。

コンテナ関連

コンテナの作成・実行

# 基本的なコンテナ作成
docker container run --name {コンテナ名} -p {ホストのポート番号:コンテナのポート番号} -d {イメージ名}

# 例:Apacheサーバーを8080ポートで起動
docker container run --name web -p 8080:80 -d httpd

-d オプションでバックグラウンド実行。これを付けないとフォアグラウンドでログが出力され続けます。

コンテナの管理

# コンテナ内の環境変数を確認
docker compose exec {コンテナ名} env

# コンテナ内のファイルシステムを確認
docker compose exec {コンテナ名} ls -la

# コンテナのIP アドレスを確認
docker container inspect {コンテナ名} | grep IPAddress

# 実行中のコンテナに新しいプロセスでシェル接続
docker container exec -it {コンテナ名} /bin/bash

# Alpine Linuxベースのコンテナの場合
docker container exec -it {コンテナ名} /bin/sh

# 一時的なコンテナでコマンド実行(終了後自動削除)
docker container run --rm -it {イメージ名} {コマンド}

Docker Compose関連

プロジェクトの管理

# コンテナの作成と実行
docker compose up -d

# コンテナの停止
docker compose stop

# コンテナの起動(作成済みのコンテナを起動)
docker compose start

# コンテナの削除
docker compose down

# イメージも一緒に削除
docker compose down --rmi all

開発でよく使うコマンド

# Docker Composeプロジェクト一覧
docker compose ls

# イメージのビルド
docker compose build

# キャッシュを使わずビルド
docker compose build --no-cache

# 再ビルドしてコンテナ実行
docker compose up -d --build

コンテナ内でのコマンド実行

# 実行中のコンテナでコマンド実行
docker compose exec {コンテナ名} {コマンド}

# 新しいコンテナを作成してコマンド実行
docker compose run {コンテナ名} {コマンド}

ファイル操作

# コンテナからホストへコピー
docker compose cp {コンテナ名:コンテナ内のファイルパス} {ホストのファイルパス}

# ホストからコンテナへコピー
docker compose cp {ホストのファイルパス} {コンテナ名:コンテナ内のファイルパス}

イメージ関連

# イメージ一覧表示
docker image ls

# イメージの削除
docker image rm {イメージID}

ボリューム関連

# ボリューム一覧表示
docker volume ls

# ボリューム削除
docker volume rm {ボリューム名}

ネットワーク関連

# Dockerネットワーク一覧表示
docker network ls

# ネットワークの詳細情報を表示
docker network inspect {ネットワーク名}

# カスタムネットワークの作成
docker network create {ネットワーク名}

# ネットワークの削除
docker network rm {ネットワーク名}

システム管理・メンテナンス

# 不要なコンテナ、ネットワーク、イメージ、ビルドキャッシュを一括削除
docker system prune

# 未使用のボリュームも含めて削除
docker system prune -a

# 未使用のボリュームのみ削除
docker volume prune

# 未使用のイメージのみ削除
docker image prune

# 停止中のコンテナのみ削除
docker container prune

# Dockerのディスク使用量を確認
docker system df

デバッグ・調査関連

# コンテナの詳細情報を表示
docker container inspect {コンテナ名}

# コンテナのプロセス一覧
docker container top {コンテナ名}

# コンテナのリソース使用状況をリアルタイム表示
docker container stats

# 特定のコンテナのリソース使用状況
docker container stats {コンテナ名}

# コンテナの変更履歴を表示
docker container diff {コンテナ名}

# イメージの履歴を表示
docker image history {イメージ名}

# ポートマッピングの確認
docker container port {コンテナ名}

ログ関連

# 基本的なログ表示
docker compose logs {コンテナ名}

# ログをリアルタイム表示(tail -f的な動作)
docker compose logs -f {コンテナ名}

# 最新の100行のログを表示
docker compose logs --tail 100 {コンテナ名}

# タイムスタンプ付きでログ表示
docker compose logs -t {コンテナ名}

# 特定時刻以降のログを表示
docker compose logs --since "2024-01-01T10:00:00" {コンテナ名}

# 全サービスのログを表示
docker compose logs

開発者向け

# コンテナ内の環境変数を確認
docker compose exec {コンテナ名} env

# コンテナ内のファイルシステムを確認
docker compose exec {コンテナ名} ls -la

# コンテナのIP アドレスを確認
docker container inspect {コンテナ名} | grep IPAddress

# コンテナのシェルに接続(bash)
docker compose exec {コンテナ名} /bin/bash

# コンテナのシェルに接続(sh - Alpine Linux等)
docker compose exec {コンテナ名} /bin/sh

# 実行中のコンテナに新しいプロセスでシェル接続
docker container exec -it {コンテナ名} /bin/bash

# 一時的なコンテナでコマンド実行(終了後自動削除)
docker container run --rm -it {イメージ名} {コマンド}

Tips

よく使う組み合わせ

1. 開発環境の立ち上げ

docker compose up -d --build

2. 環境の完全リセット

docker compose down --rmi all
docker volume prune

3. ログの確認

docker compose logs -f {コンテナ名}

4. デバッグ用の一時コンテナ起動

docker run --rm -it --network {ネットワーク名} alpine sh

5. コンテナの状態を詳しく調査

docker container inspect {コンテナ名} | jq '.[0].State'

便利なエイリアス設定

.zshrc.bashrc に追加すると便利

# よく使うDockerコマンドのエイリアス
alias dps='docker container ls'
alias dpsa='docker container ls -a'
alias di='docker image ls'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcl='docker compose logs'
alias dcb='docker compose build --no-cache'
alias dprune='docker system prune -f'

トラブルシューティング

  • コンテナが起動しない場合: docker compose logs {コンテナ名} でログを確認
  • ポートが使用されている場合: docker container ls で他のコンテナをチェック
  • ディスク容量不足の場合: docker system prune -a で不要なデータを削除
  • ネットワーク接続の問題: docker network lsdocker network inspect で確認
  • パフォーマンス問題: docker container stats でリソース使用状況を監視
  • イメージが見つからない場合: docker image ls でローカルイメージを確認、必要に応じて docker pull でダウンロード

セキュリティ関連

# コンテナの脆弱性スキャン(Docker Desktopの場合)
docker scout cves {イメージ名}

# イメージの署名確認
docker trust inspect {イメージ名}

# 非rootユーザーでコンテナ実行
docker run --user $(id -u):$(id -g) {イメージ名}

さいごに

このコマンド集は実際の開発プロジェクトで使用頻度の高そうなものを厳選しています。詳細なオプションについては公式ドキュメントを確認してください

リンク

Docker: コンテナー アプリケーション開発の加速
Docker は、開発者がコンテナー アプリケーションを構築、共有、実行できるように設計されたプラットフォームです。面倒なセットアップは私たちが行うので、あなたはコードに集中できます。

おすすめ参考書

コメント

タイトルとURLをコピーしました