---
title: "Sitecore Dockerチートシート"
slug: "sitecore-docker-cheat-sheet"
abstract: "DockerでSitecoreを管理するための最も重要なコマンドの概要。"
---
# Sitecore Dockerチートシート

公式 [のDockerドキュメント](https://docs.docker.com/reference/) は非常に分かりやすいですが、ナビゲーションが難しい場合があります。このトピックでは、ローカル開発環境で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ドキュメント](https://docs.docker.com/engine/reference/commandline/images/#format-the-output)をご覧ください。
    
-   画像を削除するには:
    
    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つのコマンドはすべて *ナノサーバー* イメージを削除します:
    
    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:画像のサイズ(バイト単位)。
    
    [アウトプをフォーマット](https://docs.docker.com/engine/reference/commandline/images/#format-the-output)できます。
    

## コンテナ管理

コンテナ管理には以下のコマンドを使用します:

-   コンテナをリストアップするには(停止コンテナを含めるには \-aを使う):
    
    docker container ls
    docker ps
    
    \-f(または\--filter)オプションで結果を絞り込むことができます。例えば、Sitecore CM画像のみを表示する場合:
    
    docker ps -f "name=cm"
    
    \--formatオプションで結果をフォーマットできます。有効なプレースホルダーのリストは[Dockerドキュメント](https://docs.docker.com/engine/reference/commandline/ps/#formatting)をご覧ください。
    
-   容器を取り除く方法(体積も \-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 - ポート、IPAアドレス、エイリアスを含むネットワーク情報です。
    -   LogPath - コンテナのログファイルへのファイルシステムパスです。
    -   ボリューム - ホストシステムとコンテナ間のボリュームマッピングを表示します。
    -   WorkingDir - コンテナ内でインタラクティブシェルを実行するときにドロップされる場所です。
    
    [出力はフォーマット](https://docs.docker.com/engine/reference/commandline/images/#format-the-output)できます。
    
-   コンテナを個別に開始・停止する方法:
    
    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テンプレートの](https://golang.org/pkg/text/template/)後に続きます。

inspectコマンドの場合、出力データはすでにJSON形式なので、データ構造はシンプルです。

いくつかの例を挙げます:

-   コンテナのイメージ名を取得するには:
    
    docker inspect --format='{{.Config.Image}}' <container>
    
-   コンテナのIPアドレスを取得するには:
    
    docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container>
    
    リストコマンドの出力はテーブル形式です。Dockerのドキュメント( [画像はこちら](https://docs.docker.com/engine/reference/commandline/images/#format-the-output)、[コンテナはこちら](https://docs.docker.com/engine/reference/commandline/ps/#formatting))には利用可能なプロパティの詳細があります。または以下のように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によってはすべての画像でうまくいくわけではありません。もしそうなら、*デタッチド* モードで実行してください:

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ドキュメント](https://docs.docker.com/config/pruning/) をご覧ください。

## 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は順序に基づいてそれらを一つの構成にまとめ、その後のファイルは前のファイルに上書き・追加されます。

集計結果はconfigを用いて確認できます。例えば:

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

これは、コンセンスファイルや .envなどを含む解決済みのアプリケーション構成を表示します。また、1つ以上のサービス名を追加することもできます。これにより、個別のサービスやコンテナをターゲットにすることができます。例えば、以下のComposeファイルが与えられます:

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

*ID*と*cm*の容器だけをrestartできます:

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のログエントリの直近20件だけを表示し、コンテナxconnect :
    
    docker compose logs --tail 20 cm xconnect
    
    また、\-f (または \--follow)オプションでログ出力をストリーミングすることもできます:
    
    docker compose logs -f --tail 20
    
    Ctrl+Cを入力して退出してください。