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 .
이 경우 기존 도커 컨테이너를 삭제해서 용량을 확보할 수도 있고,
도커가 사용하는 파일시스템을 비교적 넉넉한 타 파일시스템으로 링크를 걸어줄 수도 있다.