갑자기 동료 개발자에게 docker에 심각한 버그가 있다는 말을 들었다. 멀웨어 관련 이야기가 나오고 있길래, 우리 도커가 그럴 일이 없다고 생각했지만... 전 세계적인 어뷰징이 발생하고 있었다. 아래와 같은 팝업이 지속적으로 뜨며 개발자를 괴롭힌다.
악성 코드가 차단됨, 'com.docker.vmnetd'에 악성 코드가 포함되어 있어서 열리지 않았습니다. 이 소프트웨어는 악성 코드를 포함하고 있을 수 있습니다. 이 소프트웨어는 다운로드된 후 수정되었을 수 있습니다. 이 소프트웨어를 실행하면 컴퓨터에 손상을 줄 수 있습니다.
악성 코드가 차단됨 'com.docker.socket'에 악성 코드가 포함되어 있어서 열리지 않았습니다. 이 소프트웨어는 악성 코드를 포함하고 있을 수 있습니다. 이 소프트웨어는 다운로드된 후 수정되었을 수 있습니다. 이 소프트웨어를 실행하면 컴퓨터에 손상을 줄 수 있습니다.
영문 버전을 쓰고 있다면 아래와 같은 에러 코드가 발생한다.
Malware Blocked. “com.docker.vmnetd” was not opened because it contains malware. This action did not harm your Mac.
Malware Blocked. “com.docker.socket” was not opened because it contains malware. This action did not harm your Mac.
공식 릴리즈 노트에 따른 해결 방법과 지인의 docker 문제를 해결하는 과정 전달하고자 포스팅을 남긴다.
본론
공식적인 해결 방법은 아래의 github issue에서 확인할 수 있다. 또한 도커 공식 릴리즈에서도 이러한 정보를 알리고 있다.
- [github] docker/for-mac : https://github.com/docker/for-mac/issues/7527
- [docker] docekrstatus : https://www.dockerstatus.com/
위 레퍼런스를 참고하여 포스팅하였다. 해결 방법을 살펴보자.
활성 상태 보기
먼저 위와 같이 활성 상태 보기에 직접 들어가서 모든 docker process들을 제거한다. 만약 이렇게 해도 제거가 안 된다면 직접 터미널에서 하나하나씩 프로세스를 제거하는 방법이 있다.
# docker 관련 프로세스 전부 확인
ps aux | grep docker
# 프로세스 제거
sudo kill -9 1234
모든 프로세스 제거가 끝났다면 터미널을 통해서 다음의 명령어를 순차대로 입력한다.
# Stop the docker services
sudo pkill [dD]ocker
# Stop the vmnetd service
sudo launchctl bootout system /Library/LaunchDaemons/com.docker.vmnetd.plist
# Stop the socket service
sudo launchctl bootout system /Library/LaunchDaemons/com.docker.socket.plist
# Remove vmnetd binary
sudo rm -f /Library/PrivilegedHelperTools/com.docker.vmnetd
# Remove socket binary
sudo rm -f /Library/PrivilegedHelperTools/com.docker.socket
# 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/
순서대로 하나하나씩 복사 붙여넣기를 수행한다. 그 후에 docker를 재실행하면 해결된다. 지만....
그래도 안된다면?
그래도 안된다면 docker의 최신 버전인 4.37.2를 설치해서 restart 해야 한다고 한다. 다음의 링크를 참고하자. 새로운 버전의 .dmg 파일을 다운로드하고 기존의 docker와 대치시켜서 새로운 버전을 설치한다.
- [docker] 릴리즈 노트 : https://docs.docker.com/desktop/release-notes/
새로운 버전의 도커를 실행시키면 해결된다.
그래도 안된다면??
프로세스 재확인
최신 버전의 docker를 재실행하는 데 안된다면 여전히 잔여 프로세스가 남아있는 것일 수도 있다. 틈틈히 다음의 명령어를 통해서 잔재가 남아있지 않은 지 확인한다.
ps aux | grep docker
만약에 기타 다양한 docker 관련 프로세스가 있다면 아래의 명령어를 사용해서 지우고 다시 docker를 켠다.
sudo pkill [dD]ocker
휴지통 비우기
새로운 버전인 4.37.2를 실행시켰는데도, 아직도 팝업이 뜬다면 휴지통을 한 번 지워보자. 휴지통을 지우면 해결된 케이스가 있었다.
재부팅
위 모든 과정을 거쳤는데도 여전히 발생한다면 마지막 방법은 재부팅이다. 휴지통을 제대로 지웠다면 재부팅을 해보자. 대부분은 여기서 해결된다.
마치며
이곳에는 글을 마치고, 리서치하면서 잡다하게 얻은 잔 지식 등을 추가합니다.
참고
- [docker] dockerstatus : https://www.dockerstatus.com/
- [github] docker for mac issue : https://github.com/docker/for-mac/issues/7527
감사합니다.
'DevOps > docker' 카테고리의 다른 글
docker image의 환경 변수 그리고 우선 순위에 대하여 (0) | 2025.02.04 |
---|---|
꼭 알아야 하는 CMD와 ENTRYPOINT의 차이점 (0) | 2024.12.09 |
docker multi-stage build에 대해서 ( spring ) (0) | 2024.11.25 |
[Jenkins] DinD vs DooD 그리고 DooD 설정법 (1) | 2024.10.30 |
docker의 경량화 버전인 enroot (0) | 2024.07.13 |