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
キーを押します。