2 분 소요

문제 상황

docker-compose up -d 커맨드를 이용해 도커 컨테이너를 실행하려고 하는데 no space left on device 에러가 발생하는 상황이다.

문제 원인

말 그대로 공간이 부족해 생긴 문제이다.

해결 방법

우분투에 접속해서 진행한다.
공간을 확인해보자.

# 사용 가능한 공간 확인
$ df -h

시도1 - docker 이미지 저장 경로 수정 (해결 안됨)

이 글

이 글

# 기존 저장 경로 확인
$ sudo docker info | grep Root
# 출력: /var/lib/docker

# 새로 이미지 저장할 경로 생성
$ mkdir /home/docker-images

# 설정파일 편집
$ sudo vi /lib/systemd/system/docker.service
# 기존: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 변경: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/home/docker-images/

# 도커 재시작
$ sudo service docker stop
$ sudo service docker status
$ sudo service docker start
$ sudo service docker status

# 변경된 저장 경로 확인
$ sudo docker info | grep Root
# 출력: /home/docker-images

만약 적용이 안된다면?

$ sudo su # 슈퍼유저로 승격하지 않으면 아래에서 permission denied 에러가 발생한다.
$ systemctl daemon-reload
$ exit

시도2 - EC2 인스턴스에서 볼륨의 크기를 키운 후, 파일시스템 확장 (해결!!!!!)

이 글을 참고했다.

  1. AWS EC2 인스턴스 볼륨 확장 (기존 8 -> 16 으로 확장했다.)
  2. Linux에 들어가서 /dev/root 용량과 EC2 인스턴스에서 확장시킨 볼륨 연동하기
$ df -hT
$ lsblk
$ sudo growpart /dev/xvda 1
$ lsblk
$ sudo apt install xfsprogs
$ sudo resize2fs /dev/root
$ df -h

스크린샷 2023-02-15 오후 2 04 23
-> 보면 알다시피, 지금 /dev/root 의 용량은 7.6G 이다.

스크린샷 2023-02-15 오후 2 05 03
-> 여기서 xvda -> xvda1의 용량이 7.9G 인것을 알 수 있다. (아직 파티션 분할이 안된 것을 알 수 있음)

스크린샷 2023-02-15 오후 2 05 21
-> 위 명령어를 사용하여, 파티션을 분할 해준다.

스크린샷 2023-02-15 오후 2 05 34
-> 여기서 xvda -> xvda1의 용량이 7.9G -> 15.9G 된 것을 알 수 있음(파티션 분할 완료)

스크린샷 2023-02-15 오후 2 05 49

스크린샷 2023-02-15 오후 2 06 03
-> 🌟🌟🌟해당 명령어를 통해 aws ec2에서 볼륨을 확장 한 것을 /dev/root 용량 확장🌟🌟🌟

스크린샷 2023-02-15 오후 2 06 22
-> /dev/root의 사용량(Use%)이 95% -> 47% 가 되었다!!



이제 도커 컴포즈 명령이 잘 실행되는지 확인해보자.

스크린샷 2023-02-15 오후 2 07 02
/dev/root 용량 확장 전 안되던게

스크린샷 2023-02-15 오후 2 06 36
용량 확장 후 된다!!!

만약 sudo growpart /dev/xvda 1 과정에서 아래와 같은 에러가 발생한다면?

스크린샷 2023-03-02 오후 1 29 33

mkdir: cannot create directory ‘/tmp/growpart.433221’: No space left on device
FAILED: failed to make temp dir

용량이 너어어어무 없어서 아예 명령어 작동도 안되는 거라고 한다…
어느정도 공간 확보가 꼭 필요하다..!

이 글이 글을 참고했다.

# no space left on device 오류를 방지하려면 임시 파일 시스템 tmpfs를 /tmp 탑재 지점에 탑재합니다. 그러면 /tmp에 탑재된 10M tmpfs가 생성됩니다.
$ sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp

위 명령어 실행 이후에 나머지 단계를 마저 실행한다.

$ sudo growpart /dev/xvda 1
$ lsblk
$ sudo apt install xfsprogs
$ sudo resize2fs /dev/root
$ df -h

이후에 아래 명령어를 통해 공간을 조금 더 확보할 수 있다.
(이전에는 아래 명령어마저 no space 오류로 실행되지 않았다..ㅜ)

# 더 이상 설치되어 있지 않은 패키지들의 .deb를 제거함
$ sudo apt-get autoclean

# 다른 패키지 설치 시 의존성 때문에 설치된 패키지가 더이상 사용되지 않을 때 자동으로 삭제함
$ sudo apt-get autoremove

스크린샷 2023-03-02 오후 1 40 43



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기