Sitecore Docker クイック ガイド

概要

Docker を使用して Sitecore を管理するための最も重要なコマンドの概要。

公式の Docker のドキュメントはたいへん有益ですが、確認に少し時間がかかる場合があります。このトピックでは、ローカルの開発環境で Docker を使用して Sitecore を管理するために最も役立つコマンドの一部を示します。

以下の例では、コマンド シェルとして PowerShell を使用することを前提としています。

以下のコマンドは、Docker 自体のさまざまな情報を表示します。

  • 使用可能なすべてのコマンドを一覧表示するには、以下のコマンドを使用します。

    docker help
    docker-compose help

    --help を使用すると、特定のコマンドの詳細情報を表示できます。

    docker <command> --help
    docker-compose <command> --help
  • Docker 環境の概要 (バージョン、ルート ディレクトリ、デフォルトの分離モードなど) を表示するには、以下のコマンドを使用します。

    docker info

イメージを管理するには、以下のコマンドを使用します。

  • イメージを一覧表示するには、以下のコマンドを使用します (中間イメージを含めるには、-a を使用します)。

    docker image ls
    docker images

    --format オプションを使用すると、結果をフォーマットできます。有効なプレースホルダーのリストについては、Docker のドキュメントを参照してください。

  • イメージを削除するには、以下のコマンドを使用します。

    docker image rm <image>
    docker rmi <image>

    <image> は、イメージ ID またはフルネームのいずれかで指定できます。ID で必要なのは、一意に識別するために必要な最小限の文字数のみです。たとえば、次のイメージのリストがあるとします。

    REPOSITORY                            TAG       IMAGE ID      CREATED       SIZE
    mcr.microsoft.com/windows/servercore  ltsc2019  8351e66084ac  2 months ago  4.82GB
    mcr.microsoft.com/windows/nanoserver  1809      880394ef5494  2 months ago  251MB

    以下の 3 つのすべてのコマンドで、nanoserver のイメージが削除されます。

    docker image rm mcr.microsoft.com/windows/nanoserver
    docker rmi 880394ef5494
    docker rmi 88
  • すべてのイメージを削除するには、以下のコマンドを使用します。

    docker rmi $(docker images -a -q)

    対象をもっと選択するには、イメージのリストの形式と findstr を組み合わせて使用します。たとえば、特定の名前またはタグが付いたすべての画像を削除するには、以下のコマンドを使用します。

    docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "<search_text>")
  • イメージを検査するには、以下のコマンドを使用します。

    docker image inspect <image>
    docker inspect <image>

    これにより、次のようなイメージの詳細情報が表示されます。

    • ID: イメージの一意の識別子。

    • WorkingDir: イメージでインタラクティブ シェルを実行するときのフォルダー。これは、イメージをカスタマイズで拡張するときに使用します。

    • Entrypoint: そのイメージをコンテナーで実行するときのデフォルトのエントリポイント。これは、Docker Compose でイメージを使用するときに役立つ情報で、オーバーライドが可能になります。

    • VirtualSize: イメージのサイズ (バイト)。

    出力をフォーマットすることができます。

コンテナーを管理するには、以下のコマンドを使用します。

  • コンテナーを一覧表示するには、以下のコマンドを使用します (停止しているコンテナーを含めるには、-a を使用します)。

    docker container ls
    docker ps

    -f (または --filter) オプションを使用すると、結果をフィルター処理できます。たとえば、実行中の Sitecore CM イメージのみを表示するには、以下のコマンドを使用します。

    docker ps -f "name=cm"

    --format オプションを使用すると、結果をフォーマットできます。有効なプレースホルダーのリストについては、Docker のドキュメントを参照してください。

  • コンテナーを削除するには、以下のコマンドを使用します (ボリュームも削除するには、-v を使用します)。

    docker container rm <container>
    docker rm <container>

    イメージと同様に、<container> はコンテナー ID (全体または一部) またはフル ネームで指定できます。

  • 停止しているすべてのコンテナーを削除するには、以下のコマンドを使用します。

    docker rm $(docker ps -a -q)

    (実行中のコンテナーも削除するには、--force を追加します。)

  • コンテナーを検査するには、以下のコマンドを使用します。

    docker container inspect <container>
    docker inspect <container>

    これにより、次のようなコンテナーの詳細情報が表示されます。

    • ID: コンテナーの一意の識別子。

    • Image: コンテナーが実行されているイメージ。

    • NetworkSettings: ポート、IP アドレス、エイリアスなどのネットワーク情報。

    • LogPath: コンテナーのログ ファイルのファイル システム パス。

    • Volumes: ホスト システムとコンテナーのボリュームのマッピングが表示されます。

    • WorkingDir: これは、コンテナーで対話型シェルを実行するときの場所です。

    出力をフォーマットすることができます。

  • コンテナーを個別に起動および停止するには、以下のコマンドを使用します。

    docker container start <container>
    docker start <container>
    docker container stop <container>
    docker stop <container>

    ただし、Sitecore で開発を行う場合は、通常は複数のコンテナーがあるため、Docker Compose を使用してコンテナーを起動および停止します。

  • コンテナーとローカルのファイル システム間でファイルをコピーするには、以下のコマンドを使用します。

    docker cp <src_path> <container>:<dest_path>
    docker cp <container>:<src_path> <dest_path>

    たとえば、ファイルをコンテナーにコピーするには、以下のコマンドを使用します。

    docker cp file.txt 2c26f76568d4:/tools/

    または、コンテナーからフォルダーをコピーするには、以下のコマンドを使用します。

    docker cp 2c26f76568d4:/inetpub/wwwroot/App_Config/ ./

    注記

    これには、コンテナーがプロセス分離で実行されている必要があります。Hyper-V コンテナーでのファイル システムの操作はサポートされていません。

  • ログを表示するには、以下のコマンドを使用します。

    docker container logs <container>
    docker logs <container>

    -f (または --follow) を使用すると、ログ出力をストリーミングできます。

    docker logs -f <container>

    終了するには、Ctrl+C キーを押します。

    ほとんどのコンテナーでは多くのエントリが生成されるため、--tail オプションまたは --until オプションを使用して量を制限することができます。たとえば、最新の 20 個のログ エントリのみを表示するには、以下のコマンドを使用します。

    docker logs -f --tail 20 <container>

Docker コマンドの多くには、結果をフォーマットするための --format (または -f) オプションがあります。これにより、出力をフォーマットして表示したり、他のスクリプトに渡したりすることができます。フォーマットの文字列は、Go 言語のテンプレート機能に従っています。

inspect コマンドでは、出力データは既に JSON 形式であるため、データ構造は単純です。

以下に例をいくつか示します。

  • コンテナーのイメージ名を取得するには、以下のコマンドを使用します。

    docker inspect --format='{{.Config.Image}}' <container>
  • コンテナーの IP アドレスを取得するには、以下のコマンドを使用します。

    docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container>

    list コマンドの出力は表形式です。使用可能なプロパティの詳細については、Docker のドキュメント (イメージについてはこちらコンテナーについてはこちら) を参照してください。または、以下のコマンドを使用して、出力を JSON としてフォーマットできます。

    docker images --format "{{json .}}"
    docker ps --format "{{json .}}"
  • カスタムのイメージ リストを表示するには、以下のコマンドを使用します。

    docker images --format "{{.ID}}: {{.Repository}}"
  • カスタムのコンテナー リストを表示するには、table ディレクティブを使用します。

    docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}"

Windows イメージでインタラクティブ シェル プロンプトを開くことができます。powershell は、powershell がサポートされているイメージでのみ使用できます。省略した場合、デフォルトの cmd シェルが使用されます。

docker run -it --rm <image> [powershell]

exit を入力すると、コンテナーから前のシェル セッションに戻ります。

このコマンドでは、新しいコンテナーを起動し (run)、インタラクティブ シェルに移動して (-it)、終了した後にコンテナーを破棄します (--rm)。

これはすべてのイメージで機能するわけではなく、デフォルトの ENTRYPOINT によります。機能しない場合は、デタッチ モードで実行します。

docker run -d <image>

次に、実行中のコンテナーでインタラクティブ シェルを実行します。

以下のコマンドを使用して、実行中の Windows コンテナーでインタラクティブ シェル プロンプトを開くことができます。powershell は、powershell がサポートされているコンテナーでのみ使用できます。

docker exec -it <container> powershell
docker exec -it <container> cmd

exit を入力すると、コンテナーから前のシェル セッションに戻ります。

Docker は、使用していないリソースを自動的に削除しません。そのため、不要なリソースが時間とともに増え、ディスク領域を使い果たす可能性があります。

この問題を解決するために最も役立つのは、以下のコマンドです。

docker system prune

デフォルトでは、続行するように求められます。バイパスするには、-f (または--force) オプションを使用します。

このコマンドは、以下のものを削除します。

  • すべての停止しているコンテナー。

  • どのコンテナーでも使用されていないすべてのネットワーク。

  • すべてのダングリング イメージ (タグ付けされておらず、どのコンテナーからも参照されていないイメージ)。

  • すべてのビルド キャッシュ。

このデフォルトは、通常、いつでも安全に使用できます。次のオプションを追加すると、より積極的に削除することができます。

  • --volumes: どのコンテナーでも使用されていないすべてのボリュームを削除します。

  • -a (または --all): どのコンテナーも関連付けられていないすべてのイメージを削除します。

個々の Docker オブジェクト (イメージ、コンテナーなど) を削除するための prune コマンドもありますが、それほど多くは使用されません。詳細については、Docker のドキュメントを参照してください。

これらのコマンドは、Compose ファイルの場所から実行します。これらのコマンドは、Compose ファイルが docker-compose.yml であることを前提としています。また、追加の docker-compose.override.yml がある場合は、自動で読み込みます。

Compose ファイルに別の名前が付けられている場合は、-f フラグを使用して明示的に指定します。

docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d

ファイルは、必要なだけ指定できます。Compose は、それらを順序に基づいて 1 つの設定に結合し、後のファイルが前のファイルをオーバーライド/追加します。

config を使用すると、集約された結果を表示できます。以下に例を示します。

 docker-compose -f docker-compose.yml -f docker-compose.dev.yml config

これにより、結合された Compose ファイルや .env などの解決されたアプリケーションの設定が表示されます。また、1 つ以上のサービスの名前を追加することもできます。これにより、個々のサービスやコンテナーを対象にすることができます。たとえば、次のような Compose ファイルになります。

version: "3"
services:
  mssql: [...]
  solr: [...]
  id: [...]
  cm: [...]

restart は、id コンテナーと cm コンテナーにのみ行えます。

docker-compose restart id cm
  • コンテナーを作成して起動するには、以下のコマンドを使用します。

    docker-compose up -d

    これにより、Compose 設定で定義したすべてのサービスのコンテナーが作成および実行されます。

    -d (デタッチ モード) は、コンテナーをバックグラウンドで起動し、実行したままにします。これを省略すると、コンテナーのログが出力にストリーミングされ、プロンプトに戻るには Ctrl+C キーを押す必要があります。これにより、コンテナーも停止および削除されます。

  • コンテナーを停止するには、以下のコマンドを使用します。

    docker-compose stop

    これにより、コンテナーは停止しますが、削除されません。

  • コンテナーを起動するには、以下のコマンドを使用します。

    docker-compose start

    これにより、以前に停止した既存のコンテナーが起動されます。

  • コンテナーを再起動するには、以下のコマンドを使用します。

    docker-compose restart

    これにより、停止中および実行中のすべてのコンテナーが再起動されます。

  • コンテナーを停止して削除するには、以下のコマンドを使用します。

    docker-compose down

    これにより、すべてのコンテナーが正常に停止し、すべてが停止すると削除されます。また、up で作成されたネットワークも削除されます。ボリュームを削除するには、-v を使用します。

  • コンテナーを一覧表示するには、以下のコマンドを使用します。

    docker-compose ps

    --services オプションを使用すると、代わりにサービスの名前を一覧表示できます。停止しているコンテナーを含めるには、-a を使用します。

  • イメージを作成するには、以下のコマンドを使用します。

    docker-compose build

    これにより、build を定義しているすべてのサービスのイメージが作成されます。

    up と一緒に --build オプションを使用することができます。これにより、最新のコードでコンテナーが再作成および実行されます。

    docker-compose up --build -d
  • ログを表示するには、以下のコマンドを使用します。

    docker-compose logs

    これにより、すべてのコンテナーのログが表示されます。--tail オプションを使用すると、行数を制限して、特定のコンテナーでフィルター処理することができます。たとえば、cm コンテナーと xconnect コンテナーの最新の 20 件のログ エントリのみを表示するには、以下のコマンドを使用します。

    docker-compose logs --tail 20 cm xconnect

    また、-f (または--follow) オプションを使用すると、ログ出力をストリーミングすることもできます。

    docker-compose logs -f --tail 20

    終了するには、Ctrl+C キーを押します。