반응형
Docker 컨테이너 잘 쓰다가 갑자기 다시 run하니까 다음과 같은 오류가 떴다.
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: load library failed: libnvidia-ml.so.1: cannot open shared object file: no such file or directory: unknown.
잘 쓰던 이미지, 컨테이너가 갑자기 문제가 생기니 상당히 당황스러웠는데... 검색을 해봐도 뚜렷한 해결법이나 원인을 알 수가 없었다.
구글링의 구글링의 구글링을 반복한 끝에 얻어낸 결론은 권한 문제다.
일부 같은 오류명을 겪은 사람들의 말에 따르면 sudo를 붙이면 위 오류가 안나고, sudo를 안 붙이면 오류가 난다고 했다.
driver 설치 시, docker 설치 시 sudo를 썼네 마네 이런 얘기가 오가는데 키워드가 권한이었다.
내가 무심코 docker에서 생성한 결과 이미지의 권한을 바꾸느라 docker container 안팎으로 chmod 777을 남발한 적이 있는데 이 때 뭔가 권한 문제가 생겼나? 싶었다.
해결법
권한 문제를 푸는건 생각보다 까다로우니, docker를 다시 까는게 가장 빠르다.
Docker를 일단 싹 다 지워주고.
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce
쌓여있던 컨테이너, 이미지 등 만들었던 파일 다 삭제.
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
그리곤 처음부터 재설치.
sudo apt-get install docker-ce docker-ce-cli containerd.io
싹 다 밀어버리고 도커 일체를 다시 깐다는게 귀찮을 수 있지만 Dockerfile만 잘 관리해뒀다면 가상환경들과 달리 Docker는 만들어내기 쉬우므로 그냥 빠르게 밀고 재설치하자.
업데이트
sudo apt-get install --reinstall docker-ce
이것만 해도 될 것 같다.
반응형