解决 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,确保您获得应用了修复的最新版本。