DevOps/Docker

[Docker] Docker Image Stored Path / Docker.raw?

  • Ubuntu: /var/lib/docker/
  • Fedora: /var/lib/docker/
  • Debian: /var/lib/docker/
  • Windows: C:\\ProgramData\\DockerDesktop
  • MacOS: ~/Library/Containers/com.docker.docker/Data/vms/0/

 


Docker Image Layer를 확인할 때 필요하다. (일단 현재까지는!)

 

Linux에서의 Docker Image Layer가 설치되는 것과 MacOS에서는 달랐다.

 

즉, 참조중인 44bits.io - 만들면서 이해하는 도커(Docker) 이미지의 구조에서의 Linux 환경에서 Image Layer Test는 다음과 같았다.

$ pwd
/var/lib/docker/image/overlay2/layerdb/sha256
$ ls -1
77fcff986d3b13762e4777046b9210a109fda20cb261bd3bbe5d7161d4e73c8e/
831c5620387fb9efec59fc82a42b948546c6be601e3ab34a87108ecf852aa15f/
dc8adf8fa0fc82a56c32efac9d0da5f84153888317c88ab55123d9e71777bc62/

MacOS에서는 위의 경로(~/Library/Containers/com.docker.docker/Data/vms/0/)를 통해 참조해보니 Data/Docker.raw라는 파일 밖에 보이지 않는다. 게다가 용량도 60G로 상당히 크게 되어있다. 처음에는 놀라서 검색을 해보니 논리 디스크라서 실제 저장된 크기와 다르게 표현되었던것 같다.

 

 

Docker.raw에 대해서는 다음과 같이 설명할 수 있다.

 

Disk utilization in Docker for Mac

Docker Desktop stores Linux containers and images in a single, large “disk image” file in the Mac filesystem. This is different from Docker on Linux, which usually stores containers and images in the /var/lib/docker directory.

 

  • Linux에서는 image를 single하게 저장했지만, MacOS에서는 disk image로 한 파일에 크게 저장해두어서 Disk utilization을 의도했다고 한다.
  • 한 파일안에 여러 image에 대한 정보가 담겨있으면 어떻게 관리할까 하는데 평소처럼 docker rmi를 통해 삭제하거나 docker image prune을 통해 자주 사용하지 않는 image에 대해서 삭제를 하면된다.

Ref