Skip to content

JSON ファイルを使用した Settings Management の構成

Settings Management は、Docker Business 契約を持つ顧客のみが利用可能です。

このページでは、admin-settings.json ファイルを使用して Settings Management を構成する方法について説明します。このファイルを使用して構成パラメータを指定し、ロックすることで、企業や組織全体で標準化された Docker Desktop 環境を構築できます。

Settings Management は、開発者にルートアクセスを許可しない組織向けに設計されています。

前提条件

まず、すべての Docker Desktop 開発者が Organization で認証を行うようにサインインの強制を行う必要があります。Settings Management は Docker Business 契約が必要であり、サインインを強制することで認証されたユーザーのみがアクセスでき、この機能が全ユーザーに一貫して適用されます。

手順1: admin-settings.json ファイルを作成して適切な場所に保存

macOS や Windows でインストーラーの --admin-settings フラグを使用して、admin-settings.json を自動作成して正しい場所に保存するか、手動で設定します。

手動で設定する場合:

  1. 新しい空の JSON ファイルを作成し、admin-settings.json という名前を付けます。

  2. 以下の場所に admin-settings.json ファイルを保存します:

    • Mac: /Library/Application\ Support/com.docker.docker/admin-settings.json
    • Windows: C:\ProgramData\DockerDesktop\admin-settings.json
    • Linux: /usr/share/docker-desktop/admin-settings.json

    ファイルを保護されたディレクトリに配置することで、開発者がこれを変更できないようにします。

    💡

    重要 ファイルを指定された場所にプッシュする能力があることが前提です。これには JAMF などのデバイス管理ソフトウェアを使用できます。

手順2: ロックしたい設定を構成

⚠️

一部の構成パラメータは、特定のプラットフォームや特定のDocker Desktopバージョンにのみ適用されます。以下の表で該当箇所を確認してください。

admin-settings.json ファイルには、ネストされた構成パラメータのリストが必要であり、各パラメータには locked プロパティが含まれている必要があります。要件に応じて構成パラメータを追加または削除できます。

  • locked: true の場合、ユーザーは Docker Desktop や CLI からこの設定を編集することはできません。

  • locked: false の場合、工場出荷時のデフォルト設定に似た動作をしますが、以下のような違いがあります:

    • 新しいインストールの場合、locked: false は Docker Desktop のダッシュボードに関連する設定を事前に入力しますが、ユーザーはそれを変更することができます。
    • 既に Docker Desktop がインストールされている場合、locked: false は無視されます。既存のユーザーが設定を変更している場合、その設定は対応する設定ファイル(たとえば settings-store.jsonsettings.json(Docker Desktop 4.34以前)や daemon.json)に保存されています。このような場合、ユーザーの設定が優先され、値は変更されません。この動作を制御するには locked: true を設定してください。

以下の admin-settings.json コード例と表は、必要な構文、パラメータ、および値の説明を示しています:

{
  "configurationFileVersion": 2,
  "exposeDockerAPIOnTCP2375": {
    "locked": true,
    "value": false
  },
  "proxy": {
    "locked": true,
    "mode": "system",
    "http": "",
    "https": "",
    "exclude": [],
    "windowsDockerdPort": 65000,
    "enableKerberosNtlm": false
  },
  "containersProxy": {
    "locked": true,
    "mode": "manual",
    "http": "",
    "https": "",
    "exclude": [],
    "pac":"",
    "transparentPorts": ""
  },
  "enhancedContainerIsolation": {
    "locked": true,
    "value": true,
    "dockerSocketMount": {
      "imageList": {
        "images": [
          "docker.io/localstack/localstack:*",
          "docker.io/testcontainers/ryuk:*"
        ]
      },
      "commandList": {
        "type": "deny",
        "commands": ["push"]
      }
    }
  },
  "linuxVM": {
    "wslEngineEnabled": {
      "locked": false,
      "value": false
    },
    "dockerDaemonOptions": {
      "locked": false,
      "value":"{\"debug\": false}"
    },
    "vpnkitCIDR": {
      "locked": false,
      "value":"192.168.65.0/24"
    }
  },
  "kubernetes": {
     "locked": false,
     "enabled": false,
     "showSystemContainers": false,
     "imagesRepository": ""
  },
  "windowsContainers": {
    "dockerDaemonOptions": {
      "locked": false,
      "value":"{\"debug\": false}"
    }
  },
  "disableUpdate": {
    "locked": false,
    "value": false
  },
  "analyticsEnabled": {
    "locked": false,
    "value": true
  },
  "extensionsEnabled": {
    "locked": true,
    "value": false
  },
  "scout": {
    "locked": false,
    "sbomIndexing": true,
    "useBackgroundIndexing": true
  },
  "allowExperimentalFeatures": {
    "locked": false,
    "value": false
  },
  "allowBetaFeatures": {
    "locked": false,
    "value": false
  },
  "blockDockerLoad": {
    "locked": false,
    "value": true
  },
  "filesharingAllowedDirectories": [
    {
      "path": "$HOME",
      "sharedByDefault": true
    },
    {
      "path":"$TMP",
      "sharedByDefault": false
    }
  ],
  "useVirtualizationFrameworkVirtioFS": {
    "locked": true,
    "value": true
  },
  "useVirtualizationFrameworkRosetta": {
    "locked": true,
    "value": true
  },
  "useGrpcfuse": {
    "locked": true,
    "value": true
  },
  "displayedOnboarding": {
    "locked": true,
    "value": true
  },
  "desktopTerminalEnabled": {
    "locked": false,
    "value": false
  }
}

一般設定


パラメーターOS説明バージョン
configurationFileVersion設定ファイルフォーマットのバージョンを指定します。
analyticsEnabledvaluefalse に設定されている場合、Docker Desktop は使用状況統計を送信しません。
disableUpdatevaluetrue に設定されている場合、Docker Desktop の更新の確認および通知が無効になります。
extensionsEnabledvaluefalse に設定されている場合、Docker 拡張機能が無効になります。
blockDockerLoadvaluetrue に設定されている場合、ユーザーは docker load を実行できず、エラーが発生します。
displayedOnboardingvaluetrue に設定されている場合、新規ユーザーへのオンボーディング調査が表示されなくなります。valuefalse に設定しても影響はありません。Docker Desktop バージョン 4.30 以降
desktopTerminalEnabledvaluefalse に設定されている場合、開発者は Docker Desktop を使用してホストマシンに直接アクセスしたり、コマンドを実行することができません。
exposeDockerAPIOnTCP2375Windows のみDocker API を指定されたポートで公開します。valuetrue に設定すると、Docker API がポート 2375 で公開されます。注意: これは認証されていないため、適切なファイアウォールルールで保護されている場合のみ有効にしてください。

ファイル共有とエミュレーション


パラメーターOS説明バージョン
filesharingAllowedDirectories開発者がファイル共有を追加できるパスを指定します。$HOME$TMP、または $TEMP をパス変数として受け入れます。パスが追加されると、そのサブディレクトリも許可されます。sharedByDefaulttrue に設定すると、工場出荷時リセット時または Docker Desktop の初回起動時にそのパスが追加されます。
useVirtualizationFrameworkVirtioFSmacOS のみvaluetrue に設定されている場合、VirtioFS がファイル共有メカニズムとして設定されます。注意: useVirtualizationFrameworkVirtioFSuseGrpcfuse の両方が true に設定されている場合、VirtioFS が優先されます。また、両方が false の場合、osxfs がファイル共有メカニズムとして設定されます。
useGrpcfusemacOS のみvaluetrue に設定されている場合、gRPC Fuse がファイル共有メカニズムとして設定されます。
useVirtualizationFrameworkRosettamacOS のみvaluetrue に設定されている場合、Docker Desktop は Apple Silicon 上で x86_64/amd64 バイナリのエミュレーションを加速するために Rosetta をオンにします。この設定により、仮想化フレームワークの使用も自動的に有効になります。Docker Desktop バージョン 4.29 以降

Docker Scout


パラメーターOS説明バージョン
scoutuseBackgroundIndexingfalse に設定すると、イメージストアに読み込まれたイメージの自動インデックス作成が無効になります。sbomIndexingfalse に設定すると、Docker Desktop または docker scout CLI コマンドを使用してイメージをインデックス作成することができなくなります。

プロキシ


パラメーターOS説明バージョン
proxymodesystem に設定すると、Docker Desktop はプロキシ値をシステムから取得し、httphttps、および exclude に設定された値を無視します。プロキシサーバーを手動で設定するには、modemanual に変更します。プロキシポートがカスタムの場合、http または https プロパティで指定します(例: "https": "http://myotherproxy.com:4321")。exclude プロパティには、プロキシをバイパスするホストおよびドメインのコンマ区切りリストを指定します。
windowsDockerdPortWindows のみDocker Desktop の内部プロキシを Windows Docker デーモンが接続できるようローカルでこのポートに公開します。値が 0 の場合、ランダムな空きポートが選択されます。値が 0 より大きい場合、その値がポートとして使用されます。デフォルト値は -1 で、これによりこのオプションが無効になります。
enableKerberosNtlmvaluetrue に設定されている場合、Kerberos および NTLM 認証が有効になります。デフォルトは false です。詳細は設定ドキュメントを参照してください。

コンテナプロキシ


パラメーターOS説明バージョン
containersProxyエアギャップ環境のコンテナを作成します。詳細はエアギャップコンテナをご覧ください。Docker Desktop バージョン 4.29 以降

Linux VM


パラメーターOS説明バージョン
linuxVMLinux VM オプションに関連するパラメーターと設定をグループ化しています。
wslEngineEnabledWindows のみvaluetrue に設定すると、Docker Desktop は WSL 2 ベースのエンジンを使用します。これにより、インストール時に --backend=<backend name> フラグで設定された内容が上書きされます。
dockerDaemonOptionsvaluetrue に設定すると、Docker エンジン構成ファイルのオプションが上書きされます。詳細は Docker Engine リファレンスをご覧ください。セキュリティ向上のため、一部の構成属性は Enhanced Container Isolation が有効な場合に上書きされる可能性があります。
vpnkitCIDR*.docker.internal のための vpnkit DHCP/DNS に使用されるネットワーク範囲を上書きします。

Windows コンテナ


パラメーターOS説明バージョン
windowsContainerswindowsContainers オプションに関連するパラメーターと設定をグループ化しています。
dockerDaemonOptionsLinux デーモン構成ファイルのオプションを上書きします。詳細は Docker Engine リファレンスをご覧ください。

この設定は Docker Admin Console では設定できません。

Kubernetes


パラメーターOS説明バージョン
kubernetesenabledtrue に設定すると、Docker Desktop 起動時に Kubernetes の単一ノードクラスタが開始されます。showSystemContainerstrue に設定すると、Kubernetes コンテナが Docker Desktop ダッシュボードおよび docker ps コマンドで表示されます。imagesRepository を使用して、Docker Desktop が Kubernetes イメージをプルするリポジトリを指定できます(例: "imagesRepository": "registry-1.docker.io/docker")。

開発中の機能


パラメーターOS説明バージョン
allowExperimentalFeaturesvaluefalse に設定すると、実験的機能が無効になります。
allowBetaFeaturesvaluefalse に設定すると、ベータ機能が無効になります。

Enhanced Container Isolation (強化されたコンテナー分離)


パラメーターOS説明バージョン
enhancedContainerIsolationvaluetrue に設定すると、Docker Desktop はすべてのコンテナを Linux ユーザー名前空間を介して非特権として実行し、Docker Desktop VM 内の重要な構成を変更できないようにし、他の高度な分離技術を使用します。詳細は Enhanced Container Isolation をご覧ください。
dockerSocketMountデフォルトでは、Enhanced Container Isolation は Docker エンジンソケットのコンテナへのバインドマウント(例: docker run -v /var/run/docker.sock:/var/run/docker.sock ...)をブロックします。これにより、制御された方法で緩和することができます。詳細は ECI 構成をご覧ください。
imageListDocker エンジンソケットをバインドマウントできるコンテナイメージを指定します。
commandListバインドマウントされた Docker エンジンソケットを介してコンテナが実行できるコマンドを制限します。

手順3: Docker Desktop の再起動

admin-settings.json ファイルで行った変更が期待通りに動作するかをローカルでテストしてください。

変更を適用するには:

  • 新しいインストールでは、開発者が Docker Desktop を起動して、Organization に認証する必要があります。

  • 既存のインストールでは、Docker メニューから Docker Desktop を終了し、再起動する必要があります。すでにサインインしている場合、再度サインインする必要はありません。

    💡

    重要 Docker メニューから Restart(再起動) を選択するだけでは不十分です。これは Docker Desktop の一部のコンポーネントのみを再起動するためです。

開発者の作業を妨げないようにするため、Docker は設定変更後に自動的に再起動や再認証を要求しません。

Docker Desktop では、関連する設定がグレーアウトされ、「Locked by your administrator(管理者によってロックされています)」というメッセージが表示されます。

設定管理によるグレーアウトされたプロキシ設定