【Docker】Docker基本コマンドガイド:イメージとコンテナ操作の基礎

Dify環境構築

Dockerの概念(イメージ、コンテナ、ボリューム)やDockerfile、Docker Composeについて理解したら、次は実際にDockerを操作するための「コマンド」を覚える番です。

DifyのようなDocker Composeで管理されるアプリケーションでも、個々のコンテナの状態を確認したり、問題を調査したりする際には、基本的なDockerコマンドを知っていることが非常に役立ちます。

この記事は、『【Docker】Dockerとは?Dify導入のための基本概念と使い方ガイド』などの補足記事として、Dockerイメージやコンテナを操作するための必須コマンドを初心者向けに解説します。

 

1. Dockerの基本情報確認コマンド

まず、Docker自体の情報を確認するコマンドです。

  • Dockerバージョンの確認:
    docker version
    

    クライアントとサーバー(Docker Engine)のバージョン情報が表示されます。(--version ではありません)

  • Docker実行環境の詳細確認:
    docker system info
    

    コンテナ数、イメージ数、OSの種類、CPU/メモリ情報、ストレージドライバなど、Dockerデーモンの詳細な構成情報を確認できます。

  • Dockerディスク使用状況の確認:
    docker system df
    

    イメージ、コンテナ、ローカルボリュームなどがどれくらいのディスク容量を使用しているか、また解放可能な容量(RECLAIMABLE)はどれくらいかを確認できます。ディスクが逼迫してきた際に役立ちます。

    TYPE                TOTAL     ACTIVE    SIZE      RECLAIMABLE
    Images              10        5         1.5GB     800MB (53%)
    Containers          5         3         50MB      10MB (20%)
    Local Volumes       3         2         200MB     50MB (25%)
    Build Cache         15        0         500MB     500MB (100%)
    

 

2. Dockerイメージの管理コマンド

コンテナの「設計図」であるイメージを管理するコマンドです。

  • イメージの一覧表示:
    docker images
    # または
    docker image ls
    

    ローカル(サーバー上)に存在するイメージの一覧(リポジトリ名、タグ、イメージID、作成日、サイズ)を表示します。

    • -a オプション: 中間レイヤーイメージも含めてすべて表示します。
  • イメージのダウンロード:
    docker pull <イメージ名>:<タグ>
    

    Docker Hubなどのリモートリポジトリからイメージをダウンロードします。タグを省略すると latest が指定されます。

    # 例: Ubuntuのバージョン22.04をダウンロード
    docker pull ubuntu:22.04
    
  • イメージの削除:
    docker rmi <イメージ名>:<タグ or イメージID>
    # または
    docker image rm <イメージ名>:<タグ or イメージID>
    

    ローカルのイメージを削除します。コンテナが使用中のイメージは削除できません(先にコンテナを削除する必要があります)。

    • -f オプション: 関連するコンテナがあっても強制的に削除します(注意して使用)。
  • イメージの詳細表示:
    docker image inspect <イメージ名>:<タグ or イメージID>
    

    イメージのレイヤー構成、環境変数、公開ポート、デフォルトコマンドなど、非常に詳細な情報をJSON形式で表示します。

 

3. Dockerコンテナのライフサイクル管理コマンド

イメージ(設計図)から作られた「実体」であるコンテナを作成、起動、停止、削除するコマンドです。

  • コンテナの作成と起動:
    docker run [オプション] <イメージ名>:<タグ> [コマンド] [引数...]
    

    イメージから新しいコンテナを作成し、起動します。最も多機能なコマンドです。 よく使うオプション:

    • -d: バックグラウンド(デタッチモード)で実行します。
    • -p <ホストポート>:<コンテナポート>: ポートをマッピング(転送)します。(例: -p 8080:80)
    • --name <コンテナ名>: コンテナに任意の名前を付けます。(例: --name my-nginx)
    • -v <ボリューム名 or ホストパス>:<コンテナパス>: ボリュームやバインドマウントを設定します。
    • -e <環境変数名>=<値>: 環境変数を設定します。(例: -e MYSQL_ROOT_PASSWORD=secret)
    • --rm: コンテナが終了したら自動的に削除します(一時的な実行に便利)。
    • -it: コンテナの標準入力に接続し、インタラクティブな操作を可能にします(シェル接続時など)。
    # 例: Nginxをバックグラウンドで起動し、ポート8080に転送、名前をwebserverとする
    docker run -d --name webserver -p 8080:80 nginx:latest
    
  • 実行中のコンテナ一覧表示:
    docker ps
    # または
    docker container ls
    

    現在起動中のコンテナに関する情報(ID, イメージ名, コマンド, 作成日時, ステータス, ポート, 名前)を表示します。Docker操作の基本となる最重要コマンドです。

    docker ps の出力列:

    列名 意味
    CONTAINER ID コンテナの一意なID(短縮表示) d1a3b2c4f567
    IMAGE 使用中のイメージ名とタグ nginx:latest
    COMMAND コンテナ起動時のコマンド "/docker-entrypoint.…"
    CREATED コンテナ作成からの経過時間 10 minutes ago
    STATUS 現在の状態(起動中、停止、再起動中など) Up 10 minutes
    PORTS ポートマッピング 0.0.0.0:8080->80/tcp
    NAMES コンテナの名前 webserver

    よく使う docker ps オプション:

    • -a (--all): 停止中も含めたすべてのコンテナを表示します。
    • -q (--quiet): コンテナIDのみを表示します(スクリプトでの利用に便利)。
    • -n <数値>: 直近に作成された <数値> 個のコンテナを表示します。
    • --format "<フォーマット文字列>": 表示する列や形式をカスタマイズします。
      # 名前とポートだけをタブ区切りで表示
      docker ps --format "table {{.Names}}\t{{.Ports}}"
      # ID, 名前, ステータスをカンマ区切りで表示
      docker ps --format "ID: {{.ID}}, Name: {{.Names}}, Status: {{.Status}}"
      
    • --no-trunc: COMMAND 列などを省略せずにすべて表示します。
    • --filter "<キー>=<値>": 特定の条件でコンテナを絞り込みます。
      # 名前に "db" を含むコンテナのみ表示
      docker ps --filter "name=db"
      # "nginx:latest" イメージから作られたコンテナのみ表示
      docker ps --filter "ancestor=nginx:latest"
      # ステータスが "exited" (停止済み) のコンテナのみ表示
      docker ps -a --filter "status=exited"
      
  • コンテナの停止:
    docker stop <コンテナ名 or ID> [<コンテナ名 or ID> ...]
    

    実行中のコンテナを穏やかに停止させます(SIGTERMシグナルを送ります)。複数のコンテナを一度に指定できます。

  • コンテナの強制停止:
    docker kill <コンテナ名 or ID> [<コンテナ名 or ID> ...]
    

    実行中のコンテナを強制的に停止させます(SIGKILLシグナルを送ります)。docker stop で停止しない場合に使います。

  • 停止中のコンテナの起動:
    docker start <コンテナ名 or ID> [<コンテナ名 or ID> ...]
    

    docker stop などで停止したコンテナを再起動します。

  • コンテナの再起動:
    docker restart <コンテナ名 or ID> [<コンテナ名 or ID> ...]
    

    実行中のコンテナを再起動します(stop して start するのと同じ)。

  • 停止中のコンテナの削除:
    docker rm <コンテナ名 or ID> [<コンテナ名 or ID> ...]
    # または
    docker container rm <コンテナ名 or ID> [<コンテナ名 or ID> ...]
    

    停止しているコンテナを削除します。

    • -f オプション: 実行中のコンテナも強制的に削除します(データ消失の可能性あり、注意)。

 

4. 起動するコンテナ名を指定するには?–nameオプションの使い方を紹介

コンテナを作成すると自動でコンテナ名が命名されます.
このコンテナ名は通常ランダムな文字列です.

クリックして拡大できます

コンテナ名は削除するときに使います.削除のたびにdocker container ls -aコマンドでコンテナ名を確認するのは面倒ですよね.

コンテナを作成するときに自分で命名しましょう!
今回はコンテナ名を指定できるオプションを紹介します.

コンテナ名を指定する –nameオプション

コンテナ名を指定するときはdocker runコマンドと一緒に --nameオプションを付けます.

$ docker run --name <指定するコンテナ名> コンテナイメージ:タグ

ubunbuコンテナを作成するときにコンテナ名を指定します.

最新のubuntuコンテナを作成するのでコンテナ名はubunbu_latestとしました.

$ docker run --name ubuntu_latest ubuntu:latest

コンテナ名を確認するとubuntu_latestになっていますね.

自分で命名したコンテナ名を覚えていれば docker container lsコマンドを実行しなくても削除できて便利です!

クリックして拡大できます

docker runコマンドとよく一緒に使いますが,docker createコマンドでも使えます.

5. 実行中のコンテナとの対話コマンド

起動しているコンテナの内部を確認したり、操作したりするためのコマンドです。Difyのトラブルシューティングで多用します。

  • コンテナのログ表示:
    docker logs <コンテナ名 or ID>
    

    コンテナが標準出力/標準エラー出力に出力したログを表示します。Difyが起動しない、エラーが出る場合にまず確認するコマンドです。 よく使うオプション:

    • -f (--follow): ログの出力をリアルタイムで追跡表示します(tail -f と同様)。Ctrl+Cで停止します。
    • --tail <行数>: 末尾から指定した行数だけ表示します。(例: --tail 100)
    • -t (--timestamps): 各ログ行にタイムスタンプを付与します。
    • --since <時刻> / --until <時刻>: 指定した期間のログを表示します。(例: --since "2024-01-01T10:00:00")
  • 実行中のコンテナ内でコマンド実行:
    docker exec [オプション] <コンテナ名 or ID> <コマンド> [引数...]
    

    既に起動しているコンテナの中で、新しいプロセスとしてコマンドを実行します。デバッグや設定ファイルの確認・編集に不可欠です。 よく使うオプションと例:

    • -it: インタラクティブなtty(端末)を確保します。シェルに接続する場合に必須です。
      # 'webserver' コンテナ内でbashシェルを起動する (対話的に操作可能)
      docker exec -it webserver /bin/bash
      # (Alpine Linuxベースのコンテナの場合は /bin/sh を使うことが多い)
      # docker exec -it api /bin/sh
      

      シェルに入ったら、ls, cat, vi などのLinuxコマンドで内部を調査できます。exit でシェルを抜けます(コンテナは停止しません)。

    • 環境変数を表示する:
      docker exec webserver env
      
    • 特定のファイルの内容を表示する:
      docker exec webserver cat /etc/nginx/nginx.conf
      
  • コンテナのリソース使用状況表示:
    docker stats [<コンテナ名 or ID> ...]
    # または
    docker container stats [<コンテナ名 or ID> ...]
    

    実行中のコンテナのCPU使用率、メモリ使用量、ネットワークI/O、ブロックI/Oなどをリアルタイムで表示します(top コマンドのようなイメージ)。コンテナ名を指定しない場合は、すべての実行中コンテナが表示されます。Ctrl+Cで停止します。

  • コンテナの詳細情報表示:
    docker inspect <コンテナ名 or ID>
    # または
    docker container inspect <コンテナ名 or ID>
    

    コンテナに関する非常に詳細な情報(IPアドレス、マウントされたボリューム、環境変数、ネットワーク設定など)をJSON形式で表示します。特定の情報を抽出したい場合は jq コマンドと組み合わせると便利です。

    # コンテナのIPアドレスだけを表示
    docker inspect <コンテナ名> | grep IPAddress
    # State情報だけを jq で整形して表示
    docker inspect <コンテナ名> | jq '.[0].State'
    
  • コンテナのポートマッピング確認:
    docker port <コンテナ名 or ID>
    # または
    docker container port <コンテナ名 or ID>
    

    指定したコンテナのポートマッピング情報を表示します。

    # 例: webserverコンテナのポートマッピングを表示
    $ docker port webserver
    80/tcp -> 0.0.0.0:8080
    

 

6. Dockerネットワーク関連コマンド

コンテナ間の通信を管理するコマンドです。

  • ネットワークの一覧表示:
    docker network ls
    

    Dockerが管理しているネットワーク(bridge, host, none およびユーザー作成ネットワーク)の一覧を表示します。Docker Composeを使うと、通常 プロジェクト名_default のようなネットワークが自動作成されます。

  • ネットワークの詳細確認:
    docker network inspect <ネットワーク名 or ID>
    

    指定したネットワークに接続されているコンテナや、サブネット情報などをJSON形式で表示します。

  • ネットワークの作成/削除:
    docker network create <ネットワーク名>
    docker network rm <ネットワーク名>
    

    カスタムネットワークを作成・削除します(通常はDocker Composeが自動で行います)。

 

7. システムメンテナンス関連コマンド

不要になったDockerリソース(コンテナ、イメージ、ボリューム、ネットワーク)を整理し、ディスク容量を確保するためのコマンドです。

  • 停止中のコンテナを一括削除:
    docker container prune
    

    Exited ステータスのコンテナをすべて削除します(確認メッセージあり)。

    • -f: 確認なしで削除します。
  • 未使用のネットワークを一括削除:
    docker network prune
    

    どのコンテナからも使用されていないネットワークを削除します(確認メッセージあり)。

  • 未使用の(dangling)イメージを一括削除:
    docker image prune
    

    タグが付いておらず、どのコンテナからも参照されていない中間イメージなどを削除します(確認メッセージあり)。

    • -a: タグが付いているイメージも含め、どのコンテナからも使用されていないイメージをすべて削除します(注意して使用)。
  • 未使用のボリュームを一括削除:
    docker volume prune
    

    どのコンテナからも使用されていないボリューム(主に匿名ボリュームや過去に使っていた名前付きボリューム)を削除します(確認メッセージあり)。削除するとデータが完全に失われるため、実行前に docker volume ls で確認することを強く推奨します。

  • すべての未使用リソースを一括削除:
    docker system prune
    

    上記の container prune, network prune, image prune (danglingのみ) を一度に実行します(確認メッセージあり)。

    • -a: 使用されていないすべてのイメージ (image prune -a と同等) も含めて削除します。
    • --volumes: 未使用のボリューム (volume prune と同等) も含めて削除します。
      # 最も強力なクリーンアップ (未使用の全リソース + ボリュームを削除)
      docker system prune -a --volumes
      

      注意: これらのコマンドはディスク容量を確保するのに便利ですが、必要なデータやイメージを誤って削除しないよう、実行前に内容をよく確認してください。

 

8. ログ関連

# 基本的なログ表示
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

 

9. 開発者向け

# コンテナ内の環境変数を確認
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 {イメージ名} {コマンド}

 

10. Docker Compose関連コマンド (主要なもの)

Difyのように docker-compose.yml で管理されるアプリケーションでは、docker compose コマンドを使う方が効率的です。(ハイフンなしの compose が推奨)

  • docker compose up -d: 全サービスをバックグラウンドで起動(必要ならビルドも)。
  • docker compose down: 全サービスを停止し、コンテナ・ネットワークを削除。
  • docker compose ps: プロジェクト内のコンテナの状態を表示。
  • docker compose logs [-f] [サービス名]: サービス(コンテナ)のログを表示。
  • docker compose exec <サービス名> <コマンド>: 実行中のサービス内でコマンドを実行。
  • docker compose build [--no-cache] [サービス名]: サービスのイメージをビルド(再ビルド)。
  • docker compose pull [サービス名]: サービスの最新イメージをプル。
  • docker compose stop/start/restart [サービス名]: サービスを停止/起動/再起動。
  • docker compose ls: 実行中のDocker Composeプロジェクト一覧を表示。

(詳細は『Dockerとは?Dify導入のための基本概念と使い方ガイド』の第四章を参照)

トラブルシューティング

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

 

まとめ

Dockerを使いこなすには、これらの基本コマンドを実際にターミナルで実行し、その挙動を確認することが一番の近道です。

  • イメージ操作: pull, images, rmi, inspect
  • コンテナ操作: run, ps, stop, start, rm, exec, logs, stats, inspect
  • 整理: prune 系コマンド

特に docker ps, docker logs, docker exec は、Difyのセットアップや運用時のトラブルシューティングで頻繁に使用します。これらのコマンドに慣れておくことで、問題発生時の原因究明が格段に早くなります。

コメント

error: Content is protected !!