解決近期 macOS 上 Docker Desktop 的問題

本指南提供了解決近期影響部分 macOS Docker Desktop 使用者問題的步驟。該問題可能會導致 Docker Desktop 無法啟動,在某些情況下,還可能會觸發不準確的惡意軟體警告。關於此事件的更多詳情,請參閱部落格文章

注意

Docker Desktop 4.28 及更早版本不受此問題影響。

可用解決方案

根據您的情況,有幾種可用選項:

建議的方法是升級至最新的 Docker Desktop 版本,即 4.37.2 版本。

如果可能,請直接透過應用程式進行更新。如果無法更新,且您仍然看到惡意軟體彈出視窗,請遵循以下步驟:

  1. 強制結束無法正常啟動的 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
    
  2. 確保惡意軟體的彈出視窗已永久關閉。

  3. 下載並安裝 4.37.2 版本.

  4. 啟動 Docker Desktop。5 到 10 秒後會顯示一個需要權限的彈出訊息。

  5. 輸入您的密碼。

您現在應該可以看到 Docker Desktop 儀表板。

提示

如果完成上述步驟後,惡意軟體彈出視窗依然存在,且 Docker 已在垃圾桶中,請嘗試清空垃圾桶並重新執行這些步驟。

若您使用 4.32 - 4.36 版本,請安裝修補程式

如果您無法升級至最新版本,且看到了惡意軟體彈出視窗,請遵循以下步驟:

  1. 強制結束無法正常啟動的 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
    
  2. 確保惡意軟體的彈出視窗已永久關閉。

  3. 下載並安裝與您當前基礎版本相符的修補安裝程式。例如,如果您使用的是 4.36.0 版本,請安裝 4.36.1。

  4. 啟動 Docker Desktop。5 到 10 秒後會顯示一個需要權限的彈出訊息。

  5. 輸入您的密碼。

您現在應該可以看到 Docker Desktop 儀表板。

提示

如果完成上述步驟後,惡意軟體彈出視窗依然存在,且 Docker 已在垃圾桶中,請嘗試清空垃圾桶並重新執行這些步驟。

MDM 指令碼

如果您是 IT 管理員,且您的開發人員看到了惡意軟體彈出視窗:

  1. 請確保您的開發人員使用的是已重新簽署的 Docker Desktop 4.32 或更高版本。

  2. 執行下列指令碼:

    #!/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,確保您擁有已套用修復程式的最新版本。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.