MacにてDocker desktopがマルウェア扱いされて開けない件

MacにてDocker desktopがマルウェア扱いされて開けない件

概要

年始あたりからMacのDocker desktopがマルウェア扱いされて開けないというバグが発生していて、自分もなったのでメモ

Dockerを開くと以下のようなメッセージが出る

com.docker.vmnetdを開くとコンピューターが破損します。ゴミ箱に入れる必要があります

どうやらPCを再起動したりすると↑の現象が発生するっぽい
Dockerを入れた状態にしておくと一生ポップアップが出続けてかなりうざい(既に公式でバグ修正パッチがリリースされているが、適切な手順で入れないとポップアップが出続ける)

治し方

方法1

GitHubにもissueが立っていて、一応対応手順が載っている(が、自分は直らなかったので、方法2, 方法3の方が良さそう)

  1. Dockerを終了し、プロセスも終了させる
  2. 以下スクリプトを実行する
#!/bin/bash

# Stop the docker services
echo "Stopping Docker..."
sudo pkill '[dD]ocker'

# 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/
  1. Docker Desktopを再起動する

方法2

https://docs.docker.com/desktop/cert-revoke-solution/ こちらに載っている手順

  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
  1. Dockerを削除し、ゴミ箱も空にする
  2. 最新のDocker desktop(4.37.2)をダウンロード・インストールする

既に公式から各バージョンのバグ修正パッチがリリースされているので、それをインストールする
以下文言があるバージョンは修正が入っている

Bug fixes and enhancements
For Mac
Prevents a bug that caused Docker Desktop to not update com.docker.vmnetd or com.docker.socket to newer versions.

方法3

自分は↑の全ての対応でも直らず、こちらのissueコメントを実施したら直った

  1. 方法1のスクリプトを実行する
  2. Dockerを終了し、プロセスも終了させる(以下スクリプト参照)
  3. Dockerを削除し、ゴミ箱も空にする
  4. 以下スクリプトでもDockerを削除する
rm -rf ~/.docker
sudo rm -f /Library/LaunchDaemons/com.docker.socket.plist
sudo rm -f /Library/LaunchDaemons/com.docker.vmnetd.plist
sudo rm -f /Library/PrivilegedHelperTools/com.docker.socket
sudo rm -f /Library/PrivilegedHelperTools/com.docker.vmnetd
  1. PCを再起動する
  2. 最新のDocker desktop(4.37.2)をダウンロード・インストールする