解決近期 macOS 上 Docker Desktop 的問題
本指南提供了解決近期影響部分 macOS Docker Desktop 使用者問題的步驟。該問題可能會導致 Docker Desktop 無法啟動,在某些情況下,還可能會觸發不準確的惡意軟體警告。關於此事件的更多詳情,請參閱部落格文章。
注意Docker Desktop 4.28 及更早版本不受此問題影響。
可用解決方案
根據您的情況,有幾種可用選項:
升級至 Docker Desktop 4.37.2 版本(建議)
建議的方法是升級至最新的 Docker Desktop 版本,即 4.37.2 版本。
如果可能,請直接透過應用程式進行更新。如果無法更新,且您仍然看到惡意軟體彈出視窗,請遵循以下步驟:
強制結束無法正常啟動的 Docker 程序
$ sudo launchctl bootout system/com.docker.vmnetd 2>/dev/null || true $ sudo launchctl bootout system/com.docker.socket 2>/dev/null || true $ sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd || true $ sudo rm /Library/PrivilegedHelperTools/com.docker.socket || true $ ps aux | grep -i docker | awk '{print $2}' | sudo xargs kill -9 2>/dev/null確保惡意軟體的彈出視窗已永久關閉。
啟動 Docker Desktop。5 到 10 秒後會顯示一個需要權限的彈出訊息。
輸入您的密碼。
您現在應該可以看到 Docker Desktop 儀表板。
提示如果完成上述步驟後,惡意軟體彈出視窗依然存在,且 Docker 已在垃圾桶中,請嘗試清空垃圾桶並重新執行這些步驟。
若您使用 4.32 - 4.36 版本,請安裝修補程式
如果您無法升級至最新版本,且看到了惡意軟體彈出視窗,請遵循以下步驟:
強制結束無法正常啟動的 Docker 程序
$ sudo launchctl bootout system/com.docker.vmnetd 2>/dev/null || true $ sudo launchctl bootout system/com.docker.socket 2>/dev/null || true $ sudo rm /Library/PrivilegedHelperTools/com.docker.vmnetd || true $ sudo rm /Library/PrivilegedHelperTools/com.docker.socket || true $ ps aux | grep docker | awk '{print $2}' | sudo xargs kill -9 2>/dev/null確保惡意軟體的彈出視窗已永久關閉。
下載並安裝與您當前基礎版本相符的修補安裝程式。例如,如果您使用的是 4.36.0 版本,請安裝 4.36.1。
啟動 Docker Desktop。5 到 10 秒後會顯示一個需要權限的彈出訊息。
輸入您的密碼。
您現在應該可以看到 Docker Desktop 儀表板。
提示如果完成上述步驟後,惡意軟體彈出視窗依然存在,且 Docker 已在垃圾桶中,請嘗試清空垃圾桶並重新執行這些步驟。
MDM 指令碼
如果您是 IT 管理員,且您的開發人員看到了惡意軟體彈出視窗:
請確保您的開發人員使用的是已重新簽署的 Docker Desktop 4.32 或更高版本。
執行下列指令碼:
#!/bin/bash # Stop the docker services echo "Stopping Docker..." sudo pkill -i docker # Stop the vmnetd service echo "Stopping com.docker.vmnetd service..." sudo launchctl bootout system /Library/LaunchDaemons/com.docker.vmnetd.plist # Stop the socket service echo "Stopping com.docker.socket service..." sudo launchctl bootout system /Library/LaunchDaemons/com.docker.socket.plist # Remove vmnetd binary echo "Removing com.docker.vmnetd binary..." sudo rm -f /Library/PrivilegedHelperTools/com.docker.vmnetd # Remove socket binary echo "Removing com.docker.socket binary..." sudo rm -f /Library/PrivilegedHelperTools/com.docker.socket # Install new binaries echo "Install new binaries..." sudo cp /Applications/Docker.app/Contents/Library/LaunchServices/com.docker.vmnetd /Library/PrivilegedHelperTools/ sudo cp /Applications/Docker.app/Contents/MacOS/com.docker.socket /Library/PrivilegedHelperTools/
Homebrew Cask
如果您是使用 Homebrew Cask 安裝的 Docker Desktop,建議的解決方法是進行完整重新安裝以解決此問題。
若要重新安裝 Docker Desktop,請在終端機中執行下列指令:
$ brew update
$ brew reinstall --cask docker
這些指令將會更新 Homebrew 並完全重新安裝 Docker Desktop,確保您擁有已套用修復程式的最新版本。