使用 JSON 檔案設定設定管理
注意
設定管理功能僅適用於 Docker Business 客戶。
此頁面包含有關如何使用 admin-settings.json
檔案設定設定管理的資訊。您可以指定和鎖定設定參數,以便在公司或組織中建立標準化的 Docker Desktop 環境。
設定管理專為未授予開發人員機器根目錄存取權限的組織所設計。
先決條件
您首先需要強制登入,以確保所有 Docker Desktop 開發人員都使用您的組織進行驗證。由於設定管理需要 Docker Business 訂閱,強制登入可確保只有經過驗證的使用者才能存取,並且該功能可在所有使用者之間持續生效,即使沒有強制登入也可能仍然有效。
步驟一:建立 admin-settings.json
檔案並將其儲存在正確的位置
您可以使用 macOS 或 Windows 上的 --admin-settings
安裝程式旗標,自動建立 admin-settings.json
並將其儲存在正確的位置,或手動設定。
若要手動設定
建立一個新的空白 JSON 檔案,並將其命名為
admin-settings.json
。將
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) 將
admin-settings.json
設定檔推送至指定位置。- Mac:
步驟二:設定您要鎖定的設定
注意
某些設定參數僅適用於特定平台或特定 Docker Desktop 版本。下表中會特別標示出來。
admin-settings.json
檔案需要巢狀的設定參數清單,每個參數都必須包含 locked
參數。您可以根據需求新增或移除設定參數。
如果 locked: true
,使用者將無法從 Docker Desktop 或 CLI 編輯此設定。
如果 locked: false
,則類似於設定出廠預設值,因為
對於新的安裝,
locked: false
會預先填入 Docker Desktop 儀表板中的相關設定,但使用者可以修改它。如果已安裝並正在使用 Docker Desktop,則會忽略
locked: false
。這是因為 Docker Desktop 的現有使用者可能已經更新了設定,而該設定會寫入相關的設定檔,例如settings-store.json
(或 Docker Desktop 4.34 及更早版本的settings.json
)或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
}
}
一般
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
configurationFileVersion | 指定設定檔格式的版本。 | ||
analyticsEnabled | 如果 value 設定為 false,Docker Desktop 不會將使用統計資料傳送到 Docker。 | ||
disableUpdate | 如果 value 設定為 true,將會停用 Docker Desktop 更新的檢查和通知。 | ||
extensionsEnabled | 如果將 value 設定為 false,Docker 擴充功能將會被停用。 | ||
blockDockerLoad | 如果將 value 設定為 true ,使用者將無法執行 docker load ,且嘗試執行時會收到錯誤訊息。 | ||
displayedOnboarding | 如果將 value 設定為 true ,新使用者將不會看到新手入門問卷調查。將 value 設定為 false 則沒有任何作用。 | Docker Desktop 4.30 版及更高版本 | |
desktopTerminalEnabled | 如果將 value 設定為 false ,開發人員將無法使用 Docker 終端機與主機互動,也無法直接從 Docker Desktop 執行指令。 | ||
exposeDockerAPIOnTCP2375 | 僅限 Windows | 在指定的連接埠公開 Docker API。如果將 value 設定為 true,Docker API 將會在連接埠 2375 上公開。注意:這是未經身份驗證的,只有在有適當的防火牆規則保護下才能啟用。 |
檔案共用和模擬
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
filesharingAllowedDirectories | 指定開發人員可以新增檔案分享的路徑。也接受 $HOME 、$TMP 或 $TEMP 作為 path 變數。新增路徑時,其子目錄也會被允許。如果將 sharedByDefault 設定為 true ,該路徑將會在恢復原廠設定或 Docker Desktop 首次啟動時被新增。 | ||
useVirtualizationFrameworkVirtioFS | 僅限 macOS | 如果將 value 設定為 true ,VirtioFS 將會被設定為檔案分享機制。注意:如果 useVirtualizationFrameworkVirtioFS 和 useGrpcfuse 的 value 都設定為 true ,VirtioFS 將會優先使用。同樣地,如果 useVirtualizationFrameworkVirtioFS 和 useGrpcfuse 的 value 都設定為 false ,osxfs 將會被設定為檔案分享機制。 | |
useGrpcfuse | 僅限 macOS | 如果將 value 設定為 true ,gRPC Fuse 將會被設定為檔案分享機制。 | |
useVirtualizationFrameworkRosetta | 僅限 macOS | 如果將 value 設定為 true ,Docker Desktop 將會開啟 Rosetta 以加速 Apple Silicon 上的 x86_64/amd64 二進位程式碼模擬。注意:這也會自動啟用「使用虛擬化架構」。 | Docker Desktop 4.29 版及更高版本。 |
Docker Scout
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
scout | 將 useBackgroundIndexing 設定為 false 將會停用載入到映像檔儲存庫的映像檔自動索引功能。將 sbomIndexing 設定為 false 將會阻止使用者透過在 Docker Desktop 中檢查映像檔或使用 docker scout CLI 指令來索引映像檔。 |
Proxy
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
proxy | 如果將 mode 設定為 system 而不是 manual ,Docker Desktop 將會從系統取得代理伺服器值,並忽略為 http 、https 和 exclude 設定的任何值。將 mode 變更為 manual 即可手動設定代理伺服器。如果代理伺服器連接埠是自訂的,請在 http 或 https 屬性中指定,例如 "https": "http://myotherproxy.com:4321" 。exclude 屬性指定以逗號分隔的主機和網域名稱清單,以略過代理伺服器。 | ||
windowsDockerdPort | 僅限 Windows | 將 Docker Desktop 的內部代理伺服器在本機連接埠上公開,供 Windows Docker Daemon 連線。如果設定為 0,則會選擇一個隨機的可用連接埠。如果值大於 0,則會使用該確切值作為連接埠。預設值為 -1,表示停用此選項。 | |
enableKerberosNtlm | 設定為 true 時,將會啟用 Kerberos 和 NTLM 驗證。預設值為 false 。如需詳細資訊,請參閱設定文件。 | Docker Desktop 4.32 版及更高版本。 |
容器 Proxy
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
containersProxy | 建立隔離容器。如需詳細資訊,請參閱隔離容器。 | Docker Desktop 4.29 版及更高版本。 |
Linux 虛擬機
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
linuxVM | 與 Linux VM 選項相關的參數和設定 - 為了方便起見,將它們集中在此處。 | ||
wslEngineEnabled | 僅限 Windows | 如果將 value 設定為 true,Docker Desktop 將會使用基於 WSL 2 的引擎。這將會覆蓋使用 --backend=<backend name> 旗標在安裝過程中可能設定的任何內容。 | |
dockerDaemonOptions | 如果將 value 設定為 true,它將會覆蓋 Docker Engine 設定檔中的選項。請參閱 Docker Engine 參考。請注意,為了提高安全性,啟用增強型容器隔離時,可能會覆蓋一些設定屬性。 | ||
vpnkitCIDR | 覆蓋 vpnkit DHCP/DNS 用於 *.docker.internal 的網路範圍。 |
Windows 容器
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
windowsContainers | 與 windowsContainers 選項相關的參數和設定 - 為了方便起見,將它們集中在此處。 | ||
dockerDaemonOptions | 覆蓋 Linux Daemon 設定檔中的選項。請參閱 Docker Engine 參考。 |
注意
此設定無法透過 Docker Admin Console 進行設定。
Kubernetes
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
kubernetes | 如果將 enabled 設定為 true,Docker Desktop 啟動時將會啟動 Kubernetes 單節點叢集。如果將 showSystemContainers 設定為 true,Kubernetes 容器將會顯示在 Docker Desktop 儀表板中,以及執行 docker ps 時。imagesRepository 可讓您指定 Docker Desktop 從哪個儲存庫提取 Kubernetes 映像檔。例如,"imagesRepository": "registry-1.docker.io/docker" 。 |
開發中的功能
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
allowExperimentalFeatures | 如果將 value 設定為 false ,實驗性功能將會被停用。 | ||
allowBetaFeatures | 如果將 value 設定為 false ,測試版功能將會被停用。 |
增強型容器隔離
參數 | 作業系統 | 說明 | 版本 |
---|---|---|---|
enhancedContainerIsolation | 如果將 value 設定為 true,Docker Desktop 將會透過 Linux 使用者命名空間以非特權身分執行所有容器,防止它們修改 Docker Desktop VM 內的敏感設定,並使用其他進階技術將它們隔離。如需詳細資訊,請參閱 增強型容器隔離。 | ||
dockerSocketMount | 預設情況下,增強型容器隔離會封鎖將 Docker Engine socket 掛載到容器中(例如,docker run -v /var/run/docker.sock:/var/run/docker.sock ... )。這讓您可以以受控的方式放寬此限制。如需詳細資訊,請參閱 ECI 設定。 | ||
imageList | 指示允許哪些容器映像檔掛載 Docker Engine socket。 | ||
commandList | 限制容器可以透過掛載的 Docker Engine socket 發出的指令。 |
步驟三:重新啟動 Docker Desktop
注意
在本機測試透過
admin-settings.json
檔案進行的變更,以查看設定是否如預期般運作。
設定生效的方式
- 在新安裝的環境中,開發人員需要啟動 Docker Desktop 並向其組織進行身份驗證。
- 在現有的安裝環境中,開發人員需要透過 Docker 選單退出 Docker Desktop,然後重新啟動 Docker Desktop。如果他們已經登入,則不需要再次登入即可使變更生效。
重要
從 Docker 選單中選擇**重新啟動**是不夠的,因為它只會重新啟動 Docker Desktop 的某些元件。
為了不干擾開發人員的工作流程,Docker 不會在進行變更後自動強制開發人員重新啟動並重新驗證。
在 Docker Desktop 中,開發人員會看到相關設定呈現灰色,並顯示訊息**已由您的管理員鎖定**。

