macOS docker desktop 실행 안되는 문제 해결방법
며칠 전 macOS에서 Docker desktop 업데이트 이후 실행이 되지 않는 문제가 발생했다.
에러 메시지는 아래와 같이 나온다.
"Docker.app" is damaged and can't be opened. You should move it to the Trash.
Malware Blocked - "com.docker.vmnetd" was not opened because it contains malware. This action did not harm your Mac.
(또는 com.docker.socket)
원인 및 영향범위
위 에러의 원인은, 도커 데스크탑 설치 파일 중 일부의 서명이 잘못되었다고 한다
The reason for this warning is that some files in existing installations are incorrectly signed
(docker/for-mac #7527)
영향범위는 도커 데스크탑 4.30 ~ 4.37.1 버전이다.
해결 방법
4.37.2 버전에 위 문제를 해결하는 패치가 포함되었다. (릴리즈 노트)
해결 방법은 도커 매뉴얼과 깃허브 이슈에 정리되어 있는데, 요약하면 아래와 같다
(1) 도커 데스크탑 4.37.2 이상 최신 버전으로 업데이트
정상적으로 실행되지 않는 도커 프로세스를 kill 한다.
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) 최신 버전 설치가 불가능한 경우
위 스크립트를 동일하게 실행하고, 최신 버전 대신 현재 사용중인 버전의 패치버전을 설치한다. 예를 들면 기존에 4.36.0 버전을 쓰고 있던 경우, 4.36.1 버전을 설치한다.
MDM Script
본인이 회사에서 IT 관리자인 경우, 개발자들한테 도커 데스크탑을 문제가 해결된 버전으로 설치한 뒤 아래 스크립트를 실행하라고 한다.
#!/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/
Homebrew를 사용해 설치한 경우
docker desktop을 Homebrew를 사용해 설치했던 경우에는 brew를 이용해 재설치해야 한다.
brew update
brew reinstall --cask docker