LANGUAGE/!$%!% ERROR NOTE 2021. 10. 25. 12:07

Docker

  • 환경
    • CentOS Linux release 7.9.2009 (Core)
    • Docker 20.10.5, build 55c4c88

1. Error - 오류

docker: write /DB/tmp/GetImageBlob275657822: no space left on device.

새로운 Docker Image를 불러오는 과정에서 "장치에 남은 저장공간이 없다" 라는 메시지를 받는다.

2. Problem - 문제

용량이 부족합니다.

Docker Image 저장경로의 파티션의 용량이 부족한 상황이 발생.

  • Docker 이미지(image) 기본 저장경로

      /var/lib/docker
  • 용량 확인하기

      df -h

3. Solved - 해결

방법-가) 파티션의 용량을 확보합니다.

방법-나) Image 저장경로의 파티션 용량을 변경하거나

  • Ref

  • 예1) Home용량을 줄이고 Root용량 늘리기

    1. backup the contents of /home

       tar -czvf /root/home.tgz -C /home .
    2. test the backup

       tar -tvf /root/home.tgz
    3. unmount home

       umount /dev/mapper/centos-home
    4. remove the home logical volume

       lvremove /dev/mapper/centos-home
    5. recreate a new 400GB logical volume for /home, format and mount it

      lvcreate -L 400GB -n home centos
      mkfs.xfs /dev/centos/home
      mount /dev/mapper/centos-home
    6. extend your /root volume with ALL of the remaining space and resize (-r) the file system while doing so

       lvextend -r -l +100%FREE /dev/mapper/centos-root
    7. restore your backup

       tar -xzvf /root/home.tgz -C /home

방법-다) Image 저장경로를 여유가 있는 파티션영역으로 변경합니다.

  • Ref

  • 예1)

    1. image를 저장할 경로를 정합니다.

      • 경로가 없다면 미리 생성합니다.
          mkdir /home/docker-images
      • 설정파일을 편집합니다.
          sudo vi /lib/systemd/system/docker.service
      • ExecStart를 정의하는 부분에 --data-root=/home/docker-images/ 옵션을 추가해줍니다.
          ExecStart=/usr/bin/dockerd -g /DB -H fd:// --containerd=/run/containerd/containerd.sock
          ExecStart=/usr/bin/dockerd -g /DB -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/home/docker-images/
    2. docker service를 다시 시작합니다.

       sudo service docker stop
       sudo service docker status
       sudo service docker start
       sudo service docker status
    3. 확인합니다.

       sudo docker info grep | Root