1. Sitecore Dockerリファレンス

Sitecore Dockerチートシート

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

公式の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: イメージでインタラクティブ シェルを実行するときにいるフォルダー。これは、独自のカスタマイズで画像を拡張する場合に使用します。

    • エントリポイント: このイメージをコンテナで実行するときのデフォルトのエントリポイント。これは、オーバーライドが可能な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 - ポート、IPAddress、およびエイリアスを含むネットワーク情報。

    • 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は、それをサポートする画像でのみ使用できます。省略すると、デフォルトのcmdシェルが使用されます。

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

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

これにより、新しいコンテナ(run)が起動し、インタラクティブシェル(-it)に入り、終了後にコンテナが破棄されます(--rm)。

これは、デフォルトのENTRYPOINTによっては、すべての画像で機能するわけではありません。その場合は、detached モードで実行します。

docker run -d <image>

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

コンテナ内のインタラクティブシェルを開く

次を使用して、実行中のWindowsコンテナ内で対話型シェル プロンプトを開くことができます。 powershellは、それをサポートするコンテナでのみ使用できます。

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

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

リソースのクリーンアップ

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

この問題を解決するための最も便利なコマンドは次のとおりです。

docker system prune

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

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

  • すべての停止したコンテナ。

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

  • すべての未解決の画像 (タグが付けられておらず、どのコンテナーによっても参照されていません)。

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

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

  • --volumes - 少なくとも1つのコンテナで使用されていないすべてのボリュームを削除します

  • -a (または --all)- 少なくとも1つのコンテナが関連付けられていないすべての画像を削除します

個々のDockerオブジェクト (イメージ、コンテナなど) ごとにpruneつのコマンドがありますが、使用頻度は低くなります。詳細については、Dockerのドキュメント を参照してください。

Docker Composeを使用する

これらのコマンドは、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

これは、結合された作成ファイル、.envなど、解決されたアプリケーション構成を示しています。また、1つ以上のサービスの名前を追加することもできます。これにより、個々のサービスまたはコンテナをターゲットにすることができます。たとえば、次のComposeファイルがあるとします。

services:
  mssql: [...]
  solr: [...]
  id: [...]
  cm: [...]

idコンテナとcmコンテナだけrestartできます。

docker compose restart id cm
  • コンテナを作成して起動するには:

    docker compose up -d

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

    -d (detached mode) は、コンテナをバックグラウンドで開始し、実行したままにします。これを省略すると、コンテナ ログが出力にストリーミングされるため、プロンプトに戻るには「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を定義するすべてのサービスのイメージがビルドおよび作成されます。

    --buildオプションは、upで使用できます。これにより、最新のコードでコンテナが再構築され、実行されます。

    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 」と入力して終了します。

この記事を改善するための提案がある場合は、 お知らせください!