解决 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 casks
如果您使用 Homebrew casks 安装了 Docker Desktop,建议的解决方案是执行完整重新安装以解决问题。
要重新安装 Docker Desktop,请在您的终端中运行以下命令
$ brew update
$ brew reinstall --cask docker
这些命令将更新 Homebrew 并完全重新安装 Docker Desktop,确保您拥有已应用修复的最新版本。