php 편집기 Yuzai는 docker의 두 가지 명령인 `docker system df` 및 `/system/df`(docker api 엔드포인트)를 소개합니다. 두 명령 모두 Docker 시스템 리소스 사용량을 보는 데 사용되지만 사용법과 결과 표시 방법이 약간 다릅니다. `docker system df`는 터미널에서 직접 실행할 수 있는 docker 명령으로, docker 시스템의 다양한 리소스(이미지, 컨테이너, 데이터 볼륨 등 포함)의 사용량과 전체 리소스 사용량을 표시합니다. . 그리고 `/system/df`는 docker API 엔드포인트이며 API를 호출하여 관련 정보를 얻어야 합니다. 반환 결과는 `docker system df`와 유사하지만 프로그래밍 방식으로 docker 시스템 리소스 사용량을 얻는 데 더 적합합니다.
내 도커 호스트에서 총 디스크 사용량을 GB 단위로 가져오는 프로그램을 Go로 작성 중입니다. 이를 위해 나는 go lib의 func DiskUsage()
를 사용합니다:
코드를 보면 함수가 docker api 엔드포인트를 호출하고 있습니다. /system/df
:
그러나 docker system df
명령을 사용하여 GB를 계산하면서 이 라이브러리를 사용할 때 이상한 동작을 발견했습니다.
docker系统df
출력:
으아악
보시다시피 두 출력에는 차이가 있습니다. 엔드포인트에서 데이터를 가져오는 계산에 문제가 있는지 이해하는 데 도움이 필요합니다. /system/df
감사합니다:)
$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 223 4 21.02GB 20.7GB (98%) Containers 6 0 0B 0B Local Volumes 13 1 536.4MB 340.4MB (63%) Build Cache 954 0 13.51GB 13.51GB솔루션Docker 소스 코드 기반:
system df
https://github.com/docker/cli/blob/v24.0.5/cli/command/system/df.go
수행하는 작업을 정확하게 재현할 수 있습니다. docker 系统 df
go.mod
main.go
docker
库直接提供了diskUsage.LayersSize
if !bc.Shared
)을 사용하는 것이 좋습니다. 이렇게 하면 단위 변환의 악몽을 피할 수 있습니다! github.com/docker/go-units
(例如 units.HumanSize(float64(diskUsage.LayersSize))
위 내용은 `docker system df` 및 `/system/df`(docker api 엔드포인트)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!