Docker Desktop for Windows ユーザーマニュアル

読む時間の目安: 7 分

Docker Desktop へようこそ! Docker Desktop for Windows ユーザーマニュアルでは Docker Desktop 設定をどのように行い、管理していくのかを説明しています。

Docker Desktop のダウンロード、システム要件、インストール手順については Docker Desktop のインストール を参照してください。

Settings ダイアログ

Docker Desktop メニューからは Docker ダッシュボードを開いて、クイックスタートガイドを始めることができます。 また Docker に対する設定として、インストール設定、アップデート、バージョンチャネル設定、Docker Hub ログインなどを行うことができます。

本節では、Settings ダイアログからアクセスできる設定について説明します。

  1. 通知エリア(またはシステムトレイ)にある Docker アイコンを右クリックして、Docker Desktop メニューを開きます。

    Showing hidden apps in the taskbar

  2. Settings を実行して Settings ダイアログを開きます。

    Docker Desktop ポップアップメニュー

General タブ

Settings ダイアログの General タブにおいて、Docker の起動をいつ行うかなどを設定します。

Settings ダイアログ

  • Start Docker when you log in(ログイン時に Docker を起動)= このオプションを選択することで Windows にログインしたときに自動的に Docker Desktop を起動するようにします。

  • Expose daemon on tcp://localhost:2375 without TLS(TLS なしにデーモンを tcp://localhost:2375 で公開)= このオプションをクリックすることで、古いクライアントが Docker デーモンに接続できるようにします。 このオプションに利用には十分注意しなければなりません。 TLS を用いずにデーモンを公開するということは、リモートコードの実行攻撃を受ける可能性があります。

  • Use the WSL 2 based engine(WSL 2 ベースのエンジン利用)= WSL 2 は従来の Hyper-V バックエンドよりも高性能です。 詳しくは Docker Desktop WSL 2 バックエンド を参照してください。

  • Send usage statistics(利用統計の送信)= Docker Desktop では診断情報、クラッシュレポート、利用データを、デフォルトで送信するようになっています。 こういった情報は Docker の改善や、アプリケーションにおける問題解決に役立てることができます。 チェックボックスをオフにすれば、情報を送信しないようにすることができます。 Docker では定期的に情報確認を行うことがあります。

  • Show weekly tips(1 週間ごとのアドバイス表示)= Docker 利用に関して便利なアドバイスや提案を表示します。

  • Open Docker Desktop dashboard at startup(起動時の Docker Desktop ダッシュボードの自動起動)= Docker Desktop の起動時にダッシュボードを自動的に開きます。

  • Use Docker Compose V2(Docker Compose V2 の利用)= このオプションを選択することで、docker-composeコマンドにより Docker Compose V2 の利用を有効にします。 詳しくは Docker Compose V2 を参照してください。

Resources タブ

Resources タブは、CPU、メモリ、ディスク、プロキシー、ネットワークといったリソースを設定します。 動作させているコンテナーが WSL 2 モードでの Linux コンテナーか、Hyper-V モードでの Linux コンテナーか、Windows コンテナーかによって、設定可能な項目は異なります。

Advanced タブ

メモ

Advanced タブは Hyper-V モードにおいてのみ利用可能です。 WSL 2 モードや Windows コンテナーモードでは、ここで扱うリソースは Windows において管理されるからです。 WSL 2 モードでは、WSL 2 ユーティリティー VM に割り当てられているメモリ、CPU、スワップサイズの制限を設定することができます。

Advanced タブでは、Docker におけるリソースの利用制限を設定します。

  • CPU = デフォルトにおいて Docker Desktop は、ホストマシン上で利用可能なプロセッサー数の半分を利用するものとして設定されています。 プロセッサー性能を向上させるには、この設定値を大きくします。 逆に抑止するには設定値を小さくします。

  • メモリ = デフォルトにおいて Docker Desktop は、実行時メモリとして2GB を利用するものとして設定されています。 この値はマシン上において利用可能な全メモリ容量の中から割り当てられます。 RAM 容量を増やすには、この設定値を大きくします。 逆に減らすには、この設定値を小さくします。

  • スワップ = 必要に応じてスワップファイルサイズを設定します。 デフォルトは 1 GB です。

  • ディスクイメージサイズ = ディスクイメージのサイズを指定します。

  • ディスクイメージの保存場所 = コンテナーやイメージが保存される Linux ボリュームの場所を指定します。

ディスクイメージの保存場所は、別のところにすることができます。 移動させようとした保存場所に、すでにディスクイメージが存在していた場合は、プロンプトが表示され、既存のイメージを利用するか、イメージを置き換えるかが問われます。

File sharing タブ

メモ

Advanced タブは Hyper-V モードにおいてのみ利用可能です。 WSL 2 モードや Windows コンテナーモードでは、ファイルはすべて Windows において自動的に共有されるからです。

File sharing(ファイル共有)を利用すると、Windows 内のローカルディレクトリを Linux コンテナー間で共有できるようになります。 たとえばホストにある IDE 環境上でソースコードを編集し、コードの実行やテストはコンテナー内で行うような場合に、大変便利なものです。 ちなみにファイル共有の設定は Windows コンテナーでは不要であり、Linux コンテナー だけに必要となるものです。 あるディレクトリが Linux コンテナーに共有されるものでないならば、実行時にfile not foundcannot start serviceというエラーが発生するかもしれません。 ボリュームマウントには Linux コンテナーの共有フォルダーが必要 を参照してください。

ファイル共有の設定には以下のものがあります。

  • Add a Directory(ディレクトリの追加)= +をクリックして、追加したいディレクトリを指定します。

  • Apply & Restart(適用および再起動)= Docker のバインドマウント(-v)機能を利用して、コンテナー間でのディレクトリ共有を可能にします。

共有フォルダー、パーミッション、ボリュームマウントに関するヒント

  • コンテナーにおいて必要となるディレクトリのみを共有するようにしてください。 ファイル共有にはオーバーヘッドがあります。 ホスト上のファイルへの変更は Linux VM に対する通知を必要とするためです。 共有ファイルが多いと CPU の高負荷を発生させ、ファイルシステムの性能低下を引き起こします。

  • 共有フォルダーは、ホスト上においてアプリケーションコードを編集できるようにしつつ、その実行はコンテナー上で行うという目的で用いられます。 コード以外のものとしてキャッシュディレクトリ、データベースなどにおいては、データボリューム(名前つきボリューム)や データコンテナー を利用して Linux VM 上に保存しておけば、性能は格段によくなります。

  • Docker Desktop では所有ユーザー、グループ、その他ユーザーに対して、読み書き実行のパーミッションを 0777 つまり a+rwx に設定します。 これを設定変更することはできません。 共有ボリュームにおけるデータディレクトリでパーミッションエラー を参照してください。

  • Windows では、アプリケーションが参照するファイルシステムは英字の大文字小文字を区別しません。 一方で Linux は大文字小文字を区別します。 Linux 上においてはtestTestというファイルは別々のものとして生成可能ですが、Windows ではこの 2 つは同一のファイルを参照します。 このことが問題になる場合があります。 Windows の開発マシン上では(2 つのファイル内容が共有されているとして)、アプリケーションが正しく動作するにも関わらず、Linux の本番環境(2 つのファイルを別々に取り扱う)が実行に失敗してしまうケースです。 こういったことを避けるためには、Docker Desktop が共有ファイルにアクセスする際に、大文字小文字をそのまま扱うようにします。 たとえばtestというファイルが生成されたなら、testという名前で開かなければならないものとします。 そしてTestという名前で開こうとしたら「No such file or directory」とエラーにします。 同様にtestが生成されている状態で、2 つめのファイルTestを作ろうとしてもエラーにします。

オンデマンドによるフォルダー共有

コンテナーが特定のフォルダーを利用するときになって初めて、そのフォルダーを「オンデマンド」で共有するようにできます。

ボリュームマウントがある状態(以下に示す例)でシェルから Docker コマンドを実行するか、ボリュームマウントを持った Compose ファイルを実行したとします。 その場合、指定されたフォルダーを共有するかどうかを尋ねるポップアップ画面が開きます。

Share it(共有する)を選択すると、Docker Desktop の共有フォルダーリストに追加されて、コンテナーから利用可能になります。 逆に Cancel を選択すれば、共有しないようにもできます。

オンデマンドによるフォルダー共有

Proxies タブ

Docker Desktop では HTTP/HTTPS プロキシーの設定が可能であり、これを自動的に Docker に対して伝えます。 たとえばプロキシー設定としてhttp://proxy.example.comを行った場合、Docker はコンテナーのプル処理においてこのプロキシーを利用します。

しかしそのプロキシー設定は、これから起動するコンテナーには伝えられません。 コンテナーに対してプロキシー設定を行いたい場合は、Linux 上において行うのと同じように、環境変数を使って定義することが必要です。 たとえば以下のとおりです。

> docker run -e HTTP_PROXY=http://proxy.example.com:3128 alpine env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b7edf988b2b5
TERM=xterm
HOME=/root
HTTP_PROXY=http://proxy.example.com:3128

実行中のコンテナーに対して環境変数を設定する方法については 環境変数の設定 を参照してください。

Network タブ

メモ

Network タブは Windows コンテナーモードでは利用できません。 ネットワークは Windows によって管理されているからです。

Docker Desktop のネットワーク設定により、仮想プライベートネットワーク(VPN)上で動作するように設定することができます。 インターネットへの接続を有効にするには、ネットワークアドレス変換(NAT)のプリフィックスとサブネットマスクを設定していください。

WSL 統合環境

WSL 2 モードにおいては、WSL 2 ディストリビューションが Docker WSL 統合環境を持つように設定することができます。

デフォルトの WSL ディストリビューション上では、WSL 統合環境がデフォルトで有効になります。 デフォルトの WSL ディストリビューションを変更するにはwsl --set-default <ディストリビューション名>を実行します。 (たとえばデフォルトとして Ubuntu を設定する場合はwsl --set-default ubuntuを実行します。)

他に WSL 2 統合環境を有効にしたいディストリビューションがあれば、追加で設定することもできます。

Docker Desktop において WSL 2 を利用するための設定については Docker Desktop WSL 2 バックエンド を参照してください。

Docker Engine タブ

Docker Engine のページでは、Docker デーモンに対して、コンテナーを実行させる方法を設定することができます。

テキスト入力欄に JSON 設定ファイルを入力して、デーモンを設定します。 オプションの全一覧についてはDocker Engine の dockerd コマンドラインリファレンス を参照してください。

Apply & Restart をクリックして設定内容を保存し、Docker Desktop を再起動します。

Command Line タブ

Command Line のページでは、試験的機能を有効にするかどうかを設定することができます。

Docker Desktop においては試験的機能は有効無効を切り替えることができます。 試験的機能を無効にした場合、Docker Desktop は、その時点で利用可能な通常版の Docker Engine を利用することになります。

試験的機能

試験的な機能は、将来の製品に搭載される機能をいち早く試すことができるものです。 ただし現段階でのこの機能は、テストとフィードバックのためだけを意図しています。 したがってリリース時には予告なく変更される場合があり、将来のリリースでは完全に削除されることもあります。 試験的な機能は本番環境では利用しないでください。 Docker ではこの試験的機能に対するサポートは行っていません。

Docker CLI における現時点での試験的機能については Docker CLI 試験的機能 の一覧を参照してください。

docker versionを実行すると、試験的機能 (experimental feature) が有効であるかどうかを確認することができます。 試験的モードはServer項目の中に示されています。 Experimentaltrueであれば、Docker は試験的モードで起動しています。 たとえば以下のように表示されます。

> docker version

Client: Docker Engine - Community
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.5
 Git commit:        74b1e89
 Built:             Thu Jul 25 21:17:08 2019
 OS/Arch:           windows/amd64
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          19.03.1
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.5
  Git commit:       74b1e89
  Built:            Thu Jul 25 21:17:52 2019
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          v1.2.6
  GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
 runc:
  Version:          1.0.0-rc8
  GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Kubernetes タブ

メモ

Kubernetes タブは Windows コンテナーモードでは利用できません。

Docker Desktop には、Windows マシン上で稼動するスタンドアロンの Kubernetes サーバーが含まれます。 したがって Kubernetes 上に構築した Docker アプリをデプロイするテストができます。 Kubernetes サポートの有効化と、Docker コンテナーとして起動するスタンドアロン Kubernetes インスタンスのインストールを行うためには、Enable Kubernetes(Kubernetes の有効化)を実行します。

Docker Desktop における Kubernetes 統合機能の利用方法については Kubernetes へのデプロイ を参照してください。

ソフトウェア更新

Software Updates(ソフトウェア更新)セクションは、Docker Desktop の最新版が利用可能であるかどうかを通知します。 最新アップデートがあれば、即座にダウンロードすることができます。 または Release Notes(リリースノート)オプションをクリックして、最新バージョンに含まれる内容を確認することもできます。

アップデート自動チェックの無効化

Docker Desktop 4.2.0 からは、Docker Personal や Docker Pro など、すべての Docker サブスクリプションにおいて、このオプションによる自動更新を無効にすることができます。 Docker Desktop 4.2.0 に更新して、この機能を利用してみてください。

チェックボックス Automatically Check for Updates(アップデートの自動チェック)をオフにすることで、この機能を無効にします。 これを行うと Docker メニューにおける通知が無効になります。 また Docker ダッシュボード上の通知バッチも表示されなくなります。 アップデートを手動でチェックするには、Docker メニューの Check for updates(アップデートのチェック)オプションを実行します。

Docker Desktop による最新アップデートの自動ダウンロードを、バックグラウンド実行により行うには、Always download updates(アップデートの常時ダウンロード)を選びます。 これを選ぶと、アップデートが入手可能になると、最新版がダウンロードされます。 アップデートのダウンロードが終了したら、Apply and Restart(適用と再起動)をクリックして、アップデートをインストールします。 同じことは Docker メニューか、あるいは Docker ダッシュボード内の Updates(更新)セクションからも行うことができます。

ダッシュボード

Docker ダッシュボードを利用すると、コンテナーやアプリケーションとのやりとりが行えるようになり、アプリケーションのライフサイクルを手元のマシンから管理することができます。 ダッシュボードの UI にはすべてのコンテナーが表示され、実行中、停止中、開始中といった状態が示されます。 提供されている UI は直感的になっていて、コンテナーや Docker Compose アプリケーションを確認したり管理したりといった通常操作を行うことができます。 詳しくは Docker ダッシュボード を参照してください。

TLS 証明書の追加

Docker デーモンに対しては、信頼できる認証局(Certificate Authorities; CAs)(レジストリサーバー証明書の確認のため)やクライアント証明書(レジストリの認証のため)を追加することができます。

Reset タブ

Restart Docker DesktopReset to factory defaults、その他のリセットオプションは、Troubleshoot メニューにあります。 詳細は ログとトラブルシューティング を参照してください。

トラブルシューティング

詳しくは ログとトラブルシューティング を参照してください。

Docker Desktop for Windows フォーラム にログインすれば、コミュニティからのヘルプ、現状ユーザーのトピック参照、議論への参加を行うことができます。

GitHub 上の Docker Desktop for Windows の issue へログインして、バグや問題の報告を行ったり、コミュニティによる報告を確認したりしてください。

ドキュメントへのフィードバックや更新方法については ドキュメントへの貢献 を参照してください。

Windows と Linux の各コンテナー間の切り替え

Docker Desktop メニューにおいて、Docker CLI が通信するデーモンをどれにするか(Linux か Windows か)を切り替えるメニューがあります。 Switch to Windows containers(Windows コンテナーへの切り替え)を実行すれば Windows コンテナーを利用します。 あるいは Switch to Linux containers(Linux コンテナーへの切り替え)を実行すれば Linux コンテナーを利用します(デフォルト)。

Windows コンテナーについての詳細は、以下のドキュメントを参照してください。

Windows コンテナーへの切り替えによる Settings ダイアログの変更

Windows コンテナーに切り替えると、Settings ダイアログでは以下のタブだけが操作可能であり、Windows コンテナーへの設定を行うことができます。

Windows コンテナーモードにおいてプロキシーやデーモン設定を行った場合、その設定は Windows コンテナーに対してのみ適用されます。 Linux コンテナーに戻した場合、プロキシーやデーモンの設定は、元々 Linux コンテナーに対して行っていた設定に戻ります。 この際の Windows コンテナー設定は保持されるので、元に戻すと再度利用できるようになります。

ダッシュボード

Docker ダッシュボードは、コンテナーやアプリケーションを対話的に操作できるようにするものであり、アプリケーションのライフサイクルを手元のマシンから直接管理できます。 ダッシュボードの UI 画面からは、すべてのコンテナーが実行中、停止中、起動中といったステータスとともに表示されます。 直感的なインターフェースを通じて、コンテナーや Docker Compose ベースのアプリケーションといった Docker オブジェクトを、確認し管理することができます。 Docker ダッシュボード を参照してください。

Docker Hub

Docker Desktop メニューから Sign in /Create Docker ID を実行すると、Docker Hub アカウントにアクセスすることができます。 ログインを行っておけば、Docker Desktop メニューから Docker Hub リポジトリに直接アクセスできます。

詳しくは、以下に示す Docker Hub トピック を参照してください。

2 要素認証

Docker Desktop では Docker Hub へのサインイン時に 2 要素認証(two-factor authentication)を利用することができます。 2 要素認証は Docker Hub アカウントへのアクセス時に、二重のセキュリティを提供するものです。

Docker Desktop 経由で Docker Hub アカウントへのサインインを行う前には、あらかじめ 2 要素認証を有効にしておく必要があります。 その手順については Docker Hub における 2 要素認証の有効化 を参照してください。

2 要素認証の有効化が済んだら、以下を行います。

  1. Docker Desktop メニューから Sign in / Create Docker ID を実行します。

  2. Docker ID とパスワードを入力して Sign in をクリックします。

  3. サインインに成功したら、Docker Desktop が認証コードの入力を求めてきます。 電話に届いた 6 桁のコードを入力して Verify をクリックします。

Docker Desktop の 2 要素認証

認証が正常に行われたら、Docker Desktop メニューから組織やリポジトリに直接アクセスできるようになります。

一時停止/再開

Docker Desktop 4.2 のリリース以降では、Docker Desktop セッションを活用していない場合に、これを一時停止できるようになりました。 これにより、マシンの CPU リソース消費を節約できます。 Docker Desktop を一時停止すると、Docker Engine を稼働させている Linux VM が一時停止します。 そして各コンテナーのその時点での状態が、すべてメモリ上に保存された上で、すべてのプロセスは停止します。 このときには CPU 使用量が軽減され、ノート PC であればバッテリー駆動を長く保つことができます。 Resume(再開)オプションをクリックすれば、いつでも Docker Desktop を再開することができます。

メモ

The Pause/Resume feature is currently not available in the Windows containers mode.

Docker Desktop を一時停止するには、通知エリア(またはシステムトレイ)の Docker アイコンを右クリックして、Pause(一時停止)をクリックします。

Docker Desktop ポップアップメニュー

Docker Desktop は一時停止のステータスであることが Docker メニュー上に表示されます。 同様に Docker ダッシュボード上の全画面にも表示されます。 Docker Desktop が一時停止されていても、ダッシュボードの PreferencesTroubleshoot メニューにはアクセスすることができます。

クジラメニュー > Resume(再開)を選べば、Docker Desktop を再開できます。

メモ

Docker Desktop を一時停止すると、Docker CLI において実行中であったコマンドは、後に Docker Desktop を自動的に再開させます。

TLS 証明書の追加

Docker デーモンに対して、信頼された 認証局(Certificate Authorities; CA) を追加することができます。 これを用いてレジストリーサーバーの証明書と クライアント証明書 を検証し、レジストリに対して認証します。

どうやって独自の CA 証明書を追加するか

Docker Desktop では、信頼された認証局(Certificate Authorities; CA)をすべてサポートしています(ルート認証局および中間認証局)。 Docker は、信頼されたルート証明機関や中間証明機関のもとに保存された証明書を識別します。

Docker Desktop は Windows の証明書ストアに基づいて、ユーザーが信頼できる CA すべてを含めた CA バンドルを生成します。 そしてこれを Moby による信頼された証明書に加えます。 したがってホスト上において企業認証 SSL 証明書(enterprise SSL certificate)がユーザーによって信頼されていれば、Docker Desktop から信頼されているということです。

レジストリに対して CA ルート証明書をインストールする方法については、Docker Engine のトピックにある 証明書を使ったリポジトリクライアントの確認 を参照してください。

どうやってクライアント証明書を追加するか

クライアント証明書は~/.docker/certs.d/<MyRegistry><Port>/client.cert~/.docker/certs.d/<MyRegistry><Port>/client.keyに追加することができます。 証明書をgitコマンドを使ってプッシュする必要はありません。

Docker Desktop アプリケーションが起動する際には、Windows システム内の~/.docker/certs.dフォルダーを、Moby (Hyper-V において稼動する Docker Desktop 仮想マシン)上の/etc/docker/certs.dディレクトリにコピーします。

キーチェーンや~/.docker/certs.dディレクトリ内に変更を加えた場合には、これを適用させるために Docker Desktop の再起動が必要になります。

セキュアでないレジストリ はレジストリ一覧に表示させることはできません(Docker デーモン 参照)。 Docker Desktop ではセキュアではないレジストリのもとにある証明書は無視し、クライアント証明書を送信しません。 そのような場合にレジストリからプルを行うdocker runのようなコマンドを実行すると、コマンドライン上とレジストリ上にエラーメッセージが出力されます。

クライアント TLS 証明書による検証を実現する方法については、Docker Engine のトピックにある 証明書を使ったリポジトリクライアントの確認 を参照してください。

次に読むものは

windows, edge, tutorial, run, docker, local, machine