Docker Desktop for Mac 利用者マニュアル

Docker Desktop へようこそ! Docker Desktop for Mac 利用者マニュアルは、Docker Desktop 設定の調整と管理方法についての情報を提供します。

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

Preferences (設定)

Docker Preferences (設定)メニューは Docker の設定を調整できます。たとえば、インストール、更新、バージョンのチャンネル、 Docker Hub ログイン等です。

メニューバーの Docker メニュー( whale ) > Preference (設定)を選択すると、以下で説明している実行時のオプションを調整できます。

General(一般的な設定)

設定

設定画面の General タブでは、Docker の起動や他の設定を調整できます。

  • Start Docker when you log in :セッションの開始時、自動的に Docker Desktop を起動します。
  • Include VM in Time Machine backups (タイムマシン バックアップに仮想マシンを含める):このオプションを選択すると、Docker Desktop 仮想マシンをバックアップします。このオプションは、デフォルトでは無効です。
  • Use gRPC FUSE for file sharing (ファイル共有に gRPC FUSE を使用):このチェックボックスをクリアすると、代わりに古い osxfs ファイル共有を使います。
  • Send usage statics (利用統計情報の送信): デフォルトでは、Docker Desktop は診断情報・クラッシュ報告・利用データを送信します。この情報は、 Docker の改善やアプリケーションの問題解決に役立ちます。止めるにはチェックボックスを空にします。Docker は定期的に更なる情報を訊ねるかもしれません。
  • Show Weekly tips :Docker の使い方に役立つアドバイスや提案を表示します。
  • Open Docker Desktop dashboard at startup :Docker Desktop の起動時に、ダッシュボードを自動的に開きます。
  • Use Docker Compose V2 :このオプションを選択すると、 docker-compose コマンドが Docker Compose V2 を使えるようにします。詳しい情報は Docker Compose V2 をご覧ください。

Resources(リソース)

Resources (リソース)タブでは、CPU 、メモリ、ディスク、プロキシ、ネットワーク、その他のリソースを設定できます。

ADVANCED(高度な設定)

Advanced タブでは、 Docker が利用できるリソースを制限します。

高度な設定

Advanced 設定とは、

  • CPUs (CPU):デフォルトでは、 ホストマシン上で利用可能なプロセッサ数の半分を、Docker Desktop が使います。総理能力を向上するには、この値を高くします。減らすには、数値を低くします。
  • Memory (メモリ):デフォルトでは、 マシン上で利用可能な全メモリから 2 GB の実行メモリを使用する設定です。RAM を増やすには、この値を高くします。減らすには、値を低くします。
  • Swap (スワップ): 必要になるスワップファイル容量を設定します。デフォルトは 1 GB です。
  • Disk image size (ディスクイメージ容量):ディスクイメージの容量を指定します。
  • Disk image location (ディスクイメージの場所):Linux ボリュームの場所を指定します。ここにコンテナとイメージが置かれます。

また、ディスクイメージは別の場所に移動できます。ディスクイメージの指定先に既にイメージがある場合は、既存のイメージを使うか置き換えるか訊ねる画面を表示します。

FILE SHARING(ファイル共有)

Linux コンテナと共有したいローカルのディレクトリを選択します。これはホスト上の IDE を用い、コンテナ内でコードの実行やテストをしている場合、ソースコードの編集に特に役立ちます。デフォルトでは /Users/Volume/private/tmp/var/folders ディレクトリが共有されます。プロジェクトがこのディレクトリ外であれば、必ずこのリストに追加する必要があります。そうしなければ、 Mounts denied (マウント拒否)や cannot start serice (サービスを開始できない)エラーが実行時に出るでしょう。

ファイル共有を設定するには:

  • Add a Directory(ディレクトリの追加)+ をクリックし、追加したいディレクトリを選択します。
  • Remove a Directory(ディレクトリの削除) :削除したいディレクトリの横にある - をクリックします。
  • Apply & Restart (適用と再起動)によって、対象ディレクトリが Docker の バインド マウント(bind mount)-v )機能で利用できるようになります。

注釈

共有フォルダ上でのパーミッションとボリューム マウントの tips

  • コンテナ内で必要とするディレクトリのみ共有できます。ファイル共有は、あらゆる変更をホスト上の Linux VM に対して通知する必要があるため、オーバーヘッドを招きます。多くのファイル共有によって、高い CPU 負荷とファイルシステム性能の低下を引き起こす可能性があります。
  • 共有フォルダとは、実行しているコンテナ内から、ホスト上にあるアプリケーションのコードを編集できるように設計されています。そのため、キャッシュ用のディレクトリや、データベースのようなソースコード以外の場合には、Linux VM に保管される データ ボリューム名前付きボリューム(named volume) )や データ コンテナ を使うほうが、パフォーマンスが良くなります。
  • コンテナ内に自分のホーム ディレクトリ全体を共有しようとすると、 MacOS はリマインダやダウンロードといったホームディレクトリ上の個人データエリアへのアクセスを、 Docker に許可するかどうか確認を求めます。
  • Linux のファイルシステは 大文字と小文字を区別する(case-sensitive) のに対し、 Mac のファイルシステムはデフォルトでは 大文字と小文字を区別しません(case-insensitive) 。Linux 上では testTest という2つのファイルを作成できますが、 Mac の場合は、これらファイル名を使うと、どちらも元になっている同じファイルにを参照します。これにより、Mac 上では(ファイル内容を共有していると)アプリケーションが正しく動かないよう問題を引き起こす可能性があり、 Linux の本番環境では(ファイル対象が明確に異なるため)障害になるでしょう。これを避けるため、 Docker Desktop は共有している全てのファイルを、オリジナルの大文字か小文字かにもどづいて関連づけます。そのため、 test という名前のファイルを作成すると、必ず test として開かれます。 Test を開こうとしても、 No such file or directory のエラーになります。同様に、まず test という名前でファイルを作成すると、次に Test という名前でファイルを作成しようとしても失敗します。詳しい情報は、 /Users ディレクトリ外でファイル共有が必要なボリュームのマウント をご覧ください。

PROXIES(プロキシ)

Docker Desktop は、HTTP/HTTPS プロキシ設定を調整し、自動的に Docker に対して情報を伝達( プロパゲート(propagate) )します。例えば、 http://proxy.example.com に対してプロキシ設定をすると、Docker はコンテナの取得時にこのプロキシを使います。

プロキシを手動で設定したい場合は、 Manual proxy configuration (手動プロキシ設定)を有効にします。

プロキシを設定しても、コンテナを開始するまで情報は伝わりません。コンテナにプロキシ設定を指定したい場合は、環境変数を使って指定します。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 (ネットワーク)

Docker Desktop のネットワーク機能を、仮想プライベート ネットワーク(VPN)でも機能するように設定できます。インターネットとの疎通を有効にするには、ネットワーク アドレス変換(NAT)プリフィックスとサブネットマスクを設定します。

Docker Engine(エンジン)

Docker Engine のページでは、Docker デーモンの設定や、どのようにしてコンテナを実行するかを決められます。

デーモンの設定をするには、テキストボックス内に JSON 形式の設定ファイルとして入力します。オプションの一覧については、 Docker Engine の dockerd コマンドライン・リファレンス を御覧ください。

Apply & Restart (適用と再起動)をクリックし、設定を保存して Docker Desktop を再起動します。

Experimental Features(実験的機能)

Experimental Features (実験的機能)のページでは、experimental features(実験的機能)を有効にするかどうかを指定できます。

実験的機能は、今後提供する機能を先行利用できます。各機能は、テストやフィードバックを意図した、参考程度のものです。そのため、リリース時までに警告が出たり、今後のリリースでは削除されたりする場合があります。本番向けの環境では、実験的機能を決して使わないでください。Docker は実験的機能に対するサポートを提供していません。

新しい Apple Virtualization framework を有効化

Use the new Virtualization framework (新しい Apple Virtualization framework を有効化)を選ぶと、 Docker Desktop は hypervisor.framework の代わりに、新しい virtualization.framework を使います。新しい仮想化フレームワークを有効化すると、初回は Kubernetes クラスタが確実にリセットされます。

VirtioFS の有効化

Docker Desktop for Mac は、 virtiofs と呼ばれる新しい実験的ファイル共有実装を、開発者が使えるようにしています。つまり、現時点でのデフォルトは gRPC-FUSE です。virtiofs は macOS 上でファイル共有パフォーマンスを著しく改善するのが分かっています。詳細はブログ投稿 Speed boost achievement unlocked on Docker Desktop 4.6 for Mac. <https://www.docker.com/blog/speed-boost-achievement-unlocked-on-docker-desktop-4-6-for-mac/> をご覧ください。

virtioFS を有効化するには:

  1. macOS が以下のバージョンかどうかを確認
    • macOS 12.2 以上(Apple Silicon の場合)
    • macOS 12.3 以上(Intel の場合)
  1. virtioFS を有効化するには Enable VirtioFS accelerated directory sharing を選ぶ
  1. Apply & Restart をクリック

Kubernetes

Docker Desktop には 単独(standalone) の Kubernetes サーバが入っています。Kubernetes は Mac ホスト上で実行できますので、Kubernetes 上に Docker ワークロードを試験的にデプロイできます。Kubernetes サポートの有効化と、Docker コンテナとして Kubernetes のスタンドアロン インスタンスをインストールかつ実行するには、 Enable Kubernetes を選びます。

  • Docker コマンドを使って内部コンテナを表示するには、 Show system containers (advanced) を選択
  • すべてのスタックと Kubernetes を削除するには、 Reset Kubernetes cluster を選択。詳しい情報は Kubernetes を参照
  • 変更を反映するには、 Apply & Restart をクリック

リセット

注釈

リセットと再起動オプション

Docker Desktop Mac では、 Troubleshoot (トラブルシュート)のメニュー上から、 Restart Docker Desktop (Dockerデスクトップの再起動)と Reset to factory defaults (初期値にリセットする)オプションを利用できます。

詳しい情報は ログとトラブルシューティング をご覧ください。

Software Updates (ソフトウェア更新)

Software Updates (ソフトウェア更新)セクションは、Docker Desktop で利用可能な更新バージョンを通知します。新しい更新があれば選択肢があります。すぐにダウンロードと更新をするか、あるいは、 Release Notes (リリースノート)のオプションで更新版で何が入ったのかを確認します。

重要

自動更新の確認が無効化

Docker Personal と Docker Pro を含む、全ての Docker サブスクリプションの利用者を対象に、 Docker Desktop 4.2.0 から、更新の自動確認オプションをオフにできるようになりました。この機能を使うには、 Docker Desktop 4.2 に更新してください。

チェックボックス Automatically check for updates をクリアすると、自動更新の確認をしません。無効化の通知は、 Docker メニューと、 Docker ダッシュボード上の通知バッジからも分かります。手動で更新を確認するには、 Docker メニューから Check for updates オプションを選びます。

Docker Desktop の新しい更新の自動ダウンロードを、バックグラウンドで行いたい場合は、 Always download updates を選びます。これは、Docker の更新版が利用可能になると、新しいバージョンをダウンロードします。この設定をするには、 Docker メニューだけでなく、 Docker ダッシュボードの Updates セクションからも行えます。

Dashboard (ダッシュボード)

Docker ダッシュボードを通して、マシン上にあるコンテナとアプリケーションを用いる、アプリケーションのライフサイクルと管理をやりとりできます。ダッシュボードの UI を通して見えるのは、全ての実行中、停止中、開始中のコンテナと状態です。直感的なインターフェースを通して、コンテナや Docker Compose アプリケーションに対する調査と管理といった共通動作が行えます。より詳しい情報は、 Docker ダッシュボード をご覧ください。

TLS 証明書の追加

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

カスタム CA 証明書の追加(サーバ側)

全ての信頼できうる(ルート及び中間)証明局(CA)をサポートしています。Docker Desktop は Mac キーチェーン上にある全ての信頼できうる証明局の情報に基づき、全てのユーザが信頼する CAの証明書バンドルを作成します。また、Moby の信頼できる証明書にも適用します。そのため、エンタープライズ SSL 証明書がホスト上のユーザによって信頼されている場合は、Docker Desktop からも信頼されます。

任意の、自己証明した証明書を主導で追加するには、macOS キーチェン上に証明書を追加し、Docker Desktop が扱えるようにします。以下は例です:

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

あるいは、(全てのユーザに対してではなく)自身のローカルキーチェーンのみ追加したい場合は、代わりにこちらのコマンドを実行します。

$ security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ca.crt

また、 mac-directory-structures-for-certificates もご覧ください。

注釈

キーチェーンに対する何らかの変更をするか、 ~/.docker/certs.d ディレクトリ内の変更を有効にするには、 Docker Desktop の再起動が必要です。

以上の設定方法に関する完全な説明は Adding Self-signed Registry Certs to Docker & Docker Desktop for Mac のブログ投稿をご覧ください。

クライアント証明書の追加

自分のクライアント証明書を ~/.docker/certs.d/<MyRegistry>:<Port>/client.cert~/.docker/certs.d/<MyRegistry>:<Port>/client.key に追加できます。

Docker Desktop ・アプリケーションの開始時に、 Mac システム上の ~/.docker/certs.d フォルダを Moby 上(Docker Desktop が稼働する xhyve 上の仮想マシン)の /etc/docker/certs.d ディレクトリにコピーします。

ヒント

  • キーチェーンに対する何らかの変更をするか、 ~/.docker/certs.d ディレクトリ内の変更を有効にするには、 Docker Desktop の再起動が必要です。
  • レジストリは insecure (安全ではない)レジストリとして表示されません( mac-docker-engine をご覧ください )。Docker Desktop は安全ではないレジストリにある証明書を無視します。そして、クライアント証明書も送信しません。 docker run のようなレジストリから取得するコマンドは、コマンドライン上でもレジストリでもエラーになるメッセージが出ます。

認証情報のディレクトリ構造

次のディレクトリ構造の場合、Mac OS システムログインのため、CA 証明書を手動で追加する必要はありません。

/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
   ├── ca.crt
   ├── client.cert
   └── client.key

以下は、カスタム証明書を設定例と説明を追加したものです:

/etc/docker/certs.d/        <-- Certificate directory
└── localhost:5000          <-- Hostname:port
   ├── client.cert          <-- Client certificate
   ├── client.key           <-- Client key
   └── ca.crt               <-- Certificate authority that signed
                                the registry certificate

あるいは、CA 証明書が自分のキーチェンにあれば、次のようなディレクトリ構造にもできます。

/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
    ├── client.cert
    └── client.key

認証用にクライアント TLS 証明書を設定する方法を学ぶには、Docker エンジンの記事 :doc:`証明書でリポジトリ・クライアントを確認する </engine/security/certificates>`_ を御覧ください。

シェル補完のインストール

Docker Desktop には、 dockerdocker-compose のコマンド補完を有効化するスクリプトがあります。補完スクリプトは Docker.app 内の Contents/Resources/etc ディレクトリ内にあり、 Bash と Zsh の両方にインストールできます。

Bash

Bash は `補完のサポートを内蔵 <https://www.debian-administration.org/article/316/An_introduction_to_bash_completion_part_1`_ しています。Docker コマンドの補完をできるようにするには、 bash_completion.d/ ディレクトリ内に各ファイルをコピーしたり symlink を作成必要があります。たとえば、 `Homebrew <http://brew.sh/`_ 経由で bash をインストールするには、以下のようにします。

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.bash-completion $(brew --prefix)/etc/bash_completion.d/docker
ln -s $etc/docker-compose.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-compose

以下を自分の ~/.bash_profile に追加します:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

あるいは

if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi

Zsh

Zsh では、 補完システム の管理が必要です。Docker コマンドに対する補完を有効化するには、自分の Zsh site-functions/ ディレクトリに各ファイルをコピーするか symlink する必要があります。以下は Homebrew を経由して Zsh をインストールします:

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -s $etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

Fish-Shell

Fish-shell もまた、タブ補完による 補完システム をサポートしています。Docker コマンドに対する補完を有効化するには、各ファイルを自分の Fish-shell の completions ディレクトリにコピーするか symlink する必要があります。

completions ディレクトリを作成します:

mkdir -p ~/.config/fish/completions

次に docker から fish completions を追加します。

ln -shi /Applications/Docker.app/Contents/Resources/etc/docker.fish-completion ~/.config/fish/completions/docker.fish
ln -shi /Applications/Docker.app/Contents/Resources/etc/docker-compose.fish-completion ~/.config/fish/completions/docker-compose.fish

Docker Hub

Docker Desktop メニューから Sign in / Create Docker ID を選ぶと、 Docker Hub アカウントにアクセスできます。ログインすると、自分の Docker Hub リポジトリや organizations ディレクトリに、Docker Desktop メニューからアクセスできます。

詳しい情報は、以下の Docker Hub トピック を参照ください。

  • Docker Hub の Organizations と Teams
  • Builds

二要素認証(two-factor authentication)

Docker Desktop は Docker Hub へ二要素認証でサインインできるようにします。Docker Hub アカウントでアクセスする時、二要素認証はセキュリティの追加レイヤーを提供します。

Docker Desktopで Docker Hub アカウントでサインインする前に、 Docker Hub で二要素認証を有効化する必要があります。手順は DOcker Hub で二要素認証を有効化 をご覧ください。

二要素認証を有効化したあとは、

  1. Docker Desktop メニューに移動し、 Sign in / Create Docker ID を選択
  1. Docker ID とパスワードを入力し、 Sign in をクリック
  1. サインインに成功すると、 Docker Desktop は authentication code(認証コード)の入力を求めてきます。電話に送られた6ケタのコードを入力し、 Verify をクリックします。
Docker Desktop 二要素認証

認証に成功すると、Docker Desktop メニューから、直接自分の organization と リポジトリにアクセスできます。

一時停止(pause) / 再開(resume)

Docker Desktop 4.2 リリースから、Docker Desktop をアクティブに使っていない時、 Docker Desktop のセッションを 一時停止(pause) し、マシン上の CPU リソースを抑えます。Docker Desktop を一時停止すると、 Docker Engine を実行している Linux VM が一時停止され、メモリ上に保存されている現在のコンテナ状態すべてと、すべてのプロセスを凍結します。これにより、 CPU 使用率を減らし、ノート PC のバッテリー寿命を長く維持します。 Resume(再開)オプションをクリックすると、Docker Desktop は再開します。

Docker メニュー ( whale ) から、 Pause を選択して Docker Desktop を一時停止します。

Docker のメニュー項目

これで Docker Desktop は、 Docker メニュー上で一時停止(paused)と表示され、 Docker ダッシュボード上の ContainersImagesVolumesDev Environment 画面も一時停止と表示します。Docker Desktop を一時停止している状態でも、ダッシュボードの PreferencesTroubleshoot メニューにアクセスできます。

Docker Desktop を再開するには、 whale > Resume を選択します。

注釈

Docker Desktop を一時停止すると、Docker CLI で実行されたあらゆるコンテナも、 Docker Desktop によって自動的に一時停止されます。

フィードバックやヘルプを得るには

コミュニティからのヘルプを得たり、現在のユーザートピックを見たり、ディスカッションに参加・開始するには Docker Desktop for Mac forum にログオンください。

バグや問題の報告をするには、 GitHub の Mac issues にログオンし、そこでコミュニティに報告された報告を見たり、新しい課題を追加できます。詳細は [ログとトラブルシューティング] をご覧ください。

ドキュメントのに対するフェイードバックの提供や、自分自身で更新する方法は、 コントリビュート のドキュメントをご覧ください。

次は何をしますか

  • Docker Labs の例を通したりソースコードを深く掘り下げましょう。
  • Docker コマンドライン・インターフェース(CLI)コマンドのまとめについては、 Docker CLI リファレンスガイド をご覧ください。

参考

Docker Desktop for Mac user manual
https://docs.docker.com/desktop/mac/