Docker

Docker no space left on device 대처

@developer.kye 2023. 3. 6. 15:49
$ df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs              16G     0   16G   0% /dev
tmpfs                 16G     0   16G   0% /dev/shm
tmpfs                 16G  1.6G   14G  11% /run
tmpfs                 16G     0   16G   0% /sys/fs/cgroup
/dev/mapper/cl-root   50G   13G   38G  26% /
/dev/sda2            976M  279M  631M  31% /boot
/dev/sda1            599M  7.3M  592M   2% /boot/efi
/dev/mapper/cl-home  7.3T  144G  7.1T   2% /home
tmpfs                3.2G     0  3.2G   0% /run/user/1003

 분명 df -h 를 했을 때 용량이 남았지만 Docker no space left on device가 뜬다.

 

그 이유는 docker 이미지 빌드시 "/" 아래의 파일시스템(즉, 위 경우 /dev/mapper/cl-root)에 쓰기 때문에 그렇다.

현재 예제는 조치를 취한 뒤 가져온 데이터라 용량이 남아있지만, 조치 전에는 용량이 별로 없었다.

 

도커 컨테이너가 몇기가를 차지하고 있는지 확인하려면 다음 처럼 /var/lib/docker로 이동해 용량을 확인해보면 되는데,

아래 예제 역시 컨테이너와 이미지 둘다 삭제한 후 뜬 화면이라 1.3G밖에 없지만, 조치 전에는 22GB를 차지하고 있었다. 

$ cd /var/lib/docker
$ sudo du -h --max-depth=1 
180K	./containerd
0	./containers
0	./plugins
1.3G	./overlay2
4.9M	./image
32K	./volumes
0	./trust
108K	./network
0	./swarm
16K	./builder
56K	./buildkit
0	./tmp
0	./runtimes
1.3G	.

이 경우 기존 도커 컨테이너를 삭제해서 용량을 확보할 수도 있고,

도커가 사용하는 파일시스템을 비교적 넉넉한 타 파일시스템으로 링크를 걸어줄 수도 있다.