Docker 컨테이너 내부에서 바인드 마운트 시 여유 공간 확인

Docker 컨테이너 내부에서 바인드 마운트 시 여유 공간 확인

Debian을 실행하는 Docker 컨테이너 내에 많은 대용량 파일을 가져올 수 있는 기능이 있는 애플리케이션이 있습니다. 애플리케이션은 컨테이너 내부의 바인드 마운트를 통해 액세스할 수 있는 호스트의 폴더에 파일을 저장합니다. 이는 사용자가 사용 가능한 저장 공간보다 큰 파일 세트에 이 가져오기 기능을 지정할 때 문제가 되며, 공간이 완전히 부족해지면 애플리케이션이 매우 불편해지기 때문에 이를 피하고 싶습니다.

문제는 여유 공간의 양을 계산하는 것이 상당히 까다로워 보인다는 것입니다.올바른 파티션에컨테이너 내부에서. 컨테이너 내부에서 실행하여 모든 파티션의 여유 공간을 얻을 수 있지만 df어떤 파티션이 올바른지 알 수 없습니다. 바인드 마운트는 항상 컨테이너 내부의 동일한 경로에 있으므로 컨테이너 외부에서는 어떤 경로에 해당하는지 알 수 없습니다.

Docker 컨테이너 내에 특정 바인드 탑재 폴더가 탑재된 파티션에서 사용 가능한 여유 공간을 계산하는 방법이 있나요?

답변1

나는 당신이 형식 옵션을 사용할 수 있다고 생각합니다docker inspect당신이 찾고있는 것을 수행합니다 :

MOUNTS=$(docker inspect -f '{{ range .Mounts }}{{ .Source }} {{ end }}' $CONTAINER_ID)

그러면 공백으로 구분된 $MOUNTS모든 바인드 마운트의 소스 위치를 포함하는 변수가 생성됩니다 .$CONTAINER_ID

이 출력을 호스트 실행과 df결합하여 사용 가능한 공간을 결정합니다.

for source in $MOUNTS; do df -h $source; done

그러면 마운트가 발생한 모든 파티션이 출력되고 해당 파티션의 여유 공간이 표시됩니다.

관련 정보