>운영 및 유지보수 >Docker >Docker에서 파일이 삭제되었는데 디스크가 여전히 100%인 이유는 무엇입니까?

Docker에서 파일이 삭제되었는데 디스크가 여전히 100%인 이유는 무엇입니까?

PHPz
PHPz원래의
2023-04-18 10:25:252935검색

Docker를 사용하는 과정에서 Docker 이미지나 컨테이너를 삭제한 후에도 차지하는 디스크 공간이 줄어들지 않고 여전히 100%인 문제에 직면하는 경우가 많습니다. 왜 이런거야? 좀 더 자세히 살펴보겠습니다.

1. Docker의 기본 사용법

문제의 원인을 이해하기 전에 docker의 기본 사용법을 간략하게 살펴보겠습니다.

docker 컨테이너 실행:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

여기서 IMAGE는 실행할 이미지의 이름이며 docker 이미지 명령을 통해 볼 수 있습니다. OPTIONS에는 다음이 포함될 수 있습니다.

-d는 백그라운드에서 실행할 컨테이너를 지정합니다.

-p는 컨테이너 포트 매핑을 지정합니다. 형식은 다음과 같습니다. 호스트 포트:컨테이너 포트

--name은 컨테이너 이름을 지정합니다.

-v는 호스트 디렉터리와 컨테이너 디렉터리 마운트 지점을 지정합니다.

rm은 자동으로 컨테이너를 삭제합니다.

Docker 컨테이너 삭제:

docker rm CONTAINER [CONTAINER...]

여기서 CONTAINER는 컨테이너의 이름 또는 ID를 나타내며 docker ps -a 명령을 통해 볼 수 있습니다.

Docker 이미지 삭제:

docker rmi IMAGE [IMAGE...]

여기서 IMAGE는 docker Images 명령을 통해 볼 수 있는 이미지의 이름 또는 ID를 나타냅니다.

2. 문제 분석

위 명령을 사용하여 Docker 컨테이너 또는 이미지를 삭제할 때 일반적으로 두 가지 상황이 있습니다.

컨테이너 삭제: docker rm CONTAINER 명령을 사용하여 컨테이너를 삭제하면 Docker가 자동으로 컨테이너를 삭제합니다. 각 컨테이너는 자체적인 독립적인 파일 시스템을 가질 수 있기 때문입니다. 따라서 컨테이너가 삭제되면 해당 컨테이너가 차지하는 공간도 해제됩니다.

    이미지 삭제: docker rmi IMAGE 명령을 사용하여 이미지를 삭제하면 Docker는 이미지를 사용하는 컨테이너에 필요한 모든 콘텐츠를 유지하면서 이미지와 중간 레이어의 모든 기록 버전을 삭제합니다. 따라서 이미지가 여러 컨테이너에서 이미 사용되고 있는 경우 이미지를 삭제해도 이미지가 차지하는 모든 공간이 해제되지는 않습니다.
  1. 위의 상황을 바탕으로 결론을 내릴 수 있습니다. Docker 컨테이너나 이미지를 삭제해도 디스크 공간이 즉시 해제되는 것은 아니며 특정 도구를 사용하여 수동으로 정리해야 합니다.
3. 솔루션

Docker는 실행 시 실제로 호스트 시스템의 파일 시스템을 사용하므로 Docker 컨테이너나 이미지가 삭제되면 호스트 시스템에 남아 있는 정크 파일을 수동으로 정리해야 합니다. 디스크 공간의 해제입니다.

다음은 구체적인 정리 방법입니다.

컨테이너에서 생성된 정크 파일을 정리합니다.

  1. Docker 컨테이너에는 일부 임시 파일이나 로그 파일이 보관될 수 있으므로 컨테이너를 삭제할 때 이러한 파일을 정리해야 합니다. 너무 많은 공간을 차지하지 않도록 삭제하세요.
다음 명령을 사용하여 정리할 수 있습니다.

docker ps -aq | 해당 컨테이너 및 모든 관련 볼륨.

사용하지 않는 이미지 정리

컨테이너를 실행하면 Docker는 공식 저장소나 기타 사용자 지정 저장소에서 필요한 이미지를 다운로드하고 백업을 로컬에 저장합니다. 이러한 백업은 공간을 덜 차지하지만 사용하지 않는 이미지가 많으면 디스크 공간이 부족해질 수도 있습니다.
  1. 다음 명령을 사용하여 사용되지 않은 이미지를 확인할 수 있습니다:
docker Images -q | xargs dockerspec --format='{{.Id}} {{.RepoTags}} {{.Size}}' | 3 -h

이 명령의 기능은 모든 이미지의 ID, 태그 및 크기를 나열하고 크기별로 정렬하는 것입니다.

다음 명령을 사용하여 모든 유휴 이미지를 삭제할 수 있습니다:

docker Images -qf dangling=true | xargs docker rmi

이 명령의 기능은 사용되지 않는 모든 이미지를 찾아서 삭제하는 것입니다.

Docker 데이터 디렉터리 정리

마지막으로 위의 두 가지 방법이 작동하지 않으면 Docker 데이터 디렉터리를 수동으로 정리할 수 있습니다. 기본적으로 Docker 데이터 디렉터리는 /var/lib/docker/ 아래에 있습니다.
  1. 다음 명령을 사용하여 디렉터리를 정리할 수 있습니다.
docker system prune -a -f

이 명령의 기능은 사용하지 않는 이미지, 사용하지 않는 데이터 및 사용하지 않는 빌드 캐시를 포함하여 사용하지 않는 모든 개체를 삭제하는 것입니다.

4. 요약

Docker를 사용하는 과정에서 디스크 공간을 확보하려면 컨테이너, 이미지 및 Docker 데이터 디렉터리에 남아 있는 일부 정크 파일을 수동으로 정리해야 합니다. 이러한 파일은 많은 디스크 공간을 차지할 뿐만 아니라 시스템 리소스를 점유하고 시스템 성능에 영향을 미칩니다. 따라서 정기적으로 Docker 정크 파일을 정리하는 것이 매우 필요합니다.

위 내용은 Docker에서 파일이 삭제되었는데 디스크가 여전히 100%인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.