
내 이야기
옛날에 내가 전화를 했었지도커수천 개의 미디어 파일을 처리하기 위해 PHP laravel 대기열에서. 내 코드는 완료하려는 각 작업(예: "프로세스", "검색", "슬라이스" 등)에 대해 새 컨테이너를 생성합니다. 그리고 나는 잠자리에 들었고 재난이 닥쳤습니다. 나는 1TB의 로그 파일과 다양한 상태의 수십만 개의 컨테이너를 발견했습니다.
도커는 더 이상 작동하지 않습니다. 마찬가지로, 내가 입력하면 docker version
(또는 docker anything
그 문제에 있어서) 그것은 단지 거기 앉아서 쳐다볼 뿐입니다. docker rm $(docker ps -a -q)
Docker가 매우 우울해졌기 때문에 표준을 통해 컨테이너를 제거할 수 없습니다 .
현재 데몬을 호출하는 방법에 대한 관련 정보는 다음과 같습니다.
$> sudo docker daemon
INFO[0000] API listen on /var/run/docker.sock
INFO[0000] [graphdriver] using prior storage driver "aufs"
(Meanwhile in another terminal)
$> docker version
(insert infinite darkness here)
내 질문
docker 데몬이 응답하지 않는 경우 어떻게 docker 컨테이너를 제거할 수 있나요?
저는 Docker를 API를 사용하여 코드에서 호출되는 영광스러운 실행 파일로 사용하고 있습니다. 나중에 코드 자체를 정리하려면 어떤 추가 단계를 수행해야 합니까?
답변1
글쎄, 나는 좀 파헤쳐 보았다.
docker 데몬이 응답하지 않는 경우 어떻게 docker 컨테이너를 제거할 수 있나요?
Ubuntu에서는 컨테이너가 디렉터리에 저장됩니다 /var/lib/docker/containers
. 해당 디렉토리의 내용을 삭제하면 상황이 훨씬 좋아집니다.
또한 궁금해하시는 분들을 위해 설명하자면, 제거해야 할 컨테이너가 약 250,000개였습니다. 내가 가지고 가야 할 파일의 수를 고려하면ls /var/lib/docker/containers | xargs -n200 rm -rf
저는 Docker를 API를 사용하여 코드에서 호출되는 영광스러운 실행 파일로 사용하고 있습니다. 나중에 코드 자체를 정리하려면 어떤 추가 단계를 수행해야 합니까?
컨테이너를 다시 사용하지 않을 경우 작업을 마친 후 공식적으로 "제거"해야 합니다. 명령줄에서는 이 작업이 수행되며 docker rm $(containername)
코드에서는 docker에 액세스하는 방법에 따라 완전히 달라집니다.