解決 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 Casks

如果您使用 Homebrew Casks 安裝了 Docker Desktop,推薦的解決方案是執行完全重新安裝以解決此問題。

要重新安裝 Docker Desktop,請在終端中執行以下命令

$ brew update
$ brew reinstall --cask docker

這些命令將更新 Homebrew 並完全重新安裝 Docker Desktop,確保您獲得應用了修復的最新版本。

頁面選項