Docker Desktop for Mac 常見問題
為什麼我不斷收到通知,告訴我應用程式已變更我的桌面設定?
您收到此通知,是因為設定完整性檢查功能偵測到第三方應用程式已變更您的 Docker Desktop 設定。這通常是因為符號連結不正確或遺失所造成。此通知可確保您知道這些變更,以便您可以檢閱和修復任何潛在問題,以維護系統可靠性。
開啟通知會顯示一個快顯視窗,其中提供關於偵測到的完整性問題的詳細資訊。
如果您選擇忽略通知,則只會在下一次 Docker Desktop 啟動時再次顯示。如果您選擇修復您的設定,則不會再次收到提示。
如果您想要關閉設定完整性檢查通知,請瀏覽至 Docker Desktop 的設定,並在「一般」索引標籤中,清除「自動檢查設定」設定。
如果您對於如何進一步改善設定完整性檢查功能有任何意見回饋,請填寫意見回饋表單。
什麼是 HyperKit?
HyperKit 是一款建構於 macOS 中 Hypervisor.framework 之上的 hypervisor。它完全在使用者空間中執行,沒有其他依賴項。
我們使用 HyperKit 來免除其他 VM 產品的需求,例如 Oracle VirtualBox 或 VMWare Fusion。
HyperKit 的好處是什麼?
HyperKit 比 VirtualBox 和 VMWare Fusion 更輕薄,且包含的版本已針對 Mac 上的 Docker 工作負載進行自訂。
為什麼在我結束應用程式後,com.docker.vmnetd 仍在執行?
具特殊權限的 helper 程序 `com.docker.vmnetd` 由 `launchd` 啟動並在背景執行。除非 `Docker.app` 連線到它,否則該程序不會消耗任何資源,因此可以安全地忽略它。
Docker Desktop 將 Linux 容器和映像儲存在哪裡?
Docker Desktop 將 Linux 容器和映像儲存在 Mac 檔案系統中單個大型「磁碟映像」檔案中。這與 Linux 上的 Docker 不同,後者通常將容器和映像儲存在 `/var/lib/docker` 目錄中。
磁碟映像檔在哪裡?
若要找出磁碟映像檔,請從 Docker Desktop 儀表板選取「設定」,然後從「資源」索引標籤選取「進階」。
「進階」索引標籤會顯示磁碟映像的位置。它還會顯示磁碟映像的最大大小和磁碟映像實際消耗的空間。請注意,其他工具可能會根據最大檔案大小(而不是實際檔案大小)顯示檔案的空間使用量。
如果檔案太大怎麼辦?
如果磁碟映像檔太大,您可以
- 將它移至更大的磁碟機
- 刪除不必要的容器和映像
- 減少檔案的最大允許大小
如何將檔案移至更大的磁碟機?
若要將磁碟映像檔移至不同的位置
選取「設定」,然後從「資源」索引標籤選取「進階」。
在「磁碟映像位置」區段中,選取「瀏覽」並選擇磁碟映像的新位置。
選取「套用並重新啟動」以使變更生效。
重要
請勿直接在 Finder 中移動檔案,因為這可能會導致 Docker Desktop 無法追蹤檔案。
如何刪除不必要的容器和映像?
檢查是否有任何不必要的容器和映像檔。如果您的用戶端和守護行程 API 執行版本 1.25 或更新版本(在用戶端上使用 docker version
命令來檢查您的用戶端和守護行程 API 版本),您可以透過執行以下命令來查看詳細的空間使用資訊
$ docker system df -v
或者,要列出映像檔,請執行
$ docker image ls
要列出容器,請執行
$ docker container ls -a
如果有很多冗餘物件,請執行以下命令
$ docker system prune
此命令會移除所有已停止的容器、未使用的網路、懸空映像檔和建置快取。
根據磁碟映像檔的格式,可能需要幾分鐘的時間才能回收主機上的空間。如果檔案名稱為
Docker.raw
,主機上的空間會在幾秒鐘內回收。Docker.qcow2
,空間會在幾分鐘後由背景程序釋放。
只有在刪除映像檔時才會釋放空間。在執行中容器內刪除檔案時,不會自動釋放空間。要隨時觸發空間回收,請執行以下命令
$ docker run --privileged --pid=host docker/desktop-reclaim-space
請注意,許多工具會報告最大檔案大小,而不是實際檔案大小。要從終端機查詢主機上檔案的實際大小,請執行
$ cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
$ ls -klsh Docker.raw
2333548 -rw-r--r--@ 1 username staff 64G Dec 13 17:42 Docker.raw
在此範例中,磁碟的實際大小為 2333548
KB,而磁碟的最大大小為 64
GB。
如何減少檔案的最大大小?
要減少磁碟映像檔的最大大小
選取「設定」,然後從「資源」索引標籤選取「進階」。
**磁碟映像檔大小** 區段包含一個滑桿,可讓您更改磁碟映像檔的最大大小。調整滑桿以設定較低的限制。
選擇 **套用並重新啟動**。
當您減少最大大小時,目前的磁碟映像檔會被刪除,因此所有容器和映像檔都會遺失。
如何新增 TLS 憑證?
您可以將信任的憑證授權單位 (CA)(用於驗證 registry 伺服器憑證)和用戶端憑證(用於向 registry 進行身份驗證)新增到您的 Docker 守護行程。
新增自訂 CA 憑證(伺服器端)
支援所有信任的 CA(根憑證或中繼憑證)。Docker Desktop 會根據 Mac Keychain 建立所有使用者信任的 CA 的憑證組合,並將其附加到 Moby 信任的憑證。因此,如果企業 SSL 憑證受到主機上使用者的信任,則 Docker Desktop 也會信任它。
要手動新增自訂的自我簽署憑證,請先將憑證新增到 macOS keychain,Docker Desktop 會擷取它。以下是一個範例
$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt
或者,如果您只想將憑證新增到您自己的本機 keychain(而不是所有使用者),請改為執行此命令
$ security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ca.crt
另請參閱 憑證的目錄結構。
注意事項
您需要在對 keychain 或
~/.docker/certs.d
目錄進行任何變更後重新啟動 Docker Desktop,變更才會生效。
如需完整的操作說明,請參閱部落格文章 將自我簽署的 Registry 憑證新增到 Docker 和 Docker Desktop for Mac。
新增用戶端憑證
您可以將用戶端憑證放在 ~/.docker/certs.d/<我的Registry>:<埠>/client.cert
和 ~/.docker/certs.d/<我的Registry>:<埠>/client.key
。
當 Docker Desktop 應用程式啟動時,它會將您 Mac 上的 ~/.docker/certs.d
資料夾複製到 Moby(Docker Desktop xhyve
虛擬機器)上的 /etc/docker/certs.d
目錄。
注意事項
您需要在對 keychain 或
~/.docker/certs.d
目錄進行任何變更後重新啟動 Docker Desktop,變更才會生效。registry 不能列為 *不安全的 registry*。Docker Desktop 會忽略不安全 registry 下列出的憑證,且不會傳送用戶端憑證。嘗試從 registry 進行提取的命令(例如
docker run
)會在命令列以及 registry 上產生錯誤訊息。
憑證的目錄結構
如果您有此目錄結構,則不需要手動將 CA 憑證新增到您的 Mac OS 系統登入
/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 憑證也在您的 keychain 中即可。
/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
├── client.cert
└── client.key
要進一步瞭解如何為 registry 安裝 CA 根憑證以及如何設定用戶端 TLS 憑證以進行驗證,請參閱 Docker Engine 主題中的 使用憑證驗證存放庫用戶端。