티스토리 뷰

Docker

Docker No space left on device 해결

gyuzero 2023. 2. 7. 17:47

Docker를 사용하는데 No space left on device 에러가 발생했다.

 

확인해보니 디스크 용량이 부족한게 문제였다.

 

이를 해결하기 위해 Docker Container에서 사용하지 않는 모든 Docker Volume을 정리 하기 위해 아래 명령어를 사용했다.

docker volume prune

 

위의 명령어를 통해 Docker Volume을 정리하였지만 크게 효과를 보지못하였다.

 

그래서 현재 Docker가 사용하고 있는 디스크 공간을 여유 있는 디스크 공간으로 변경하기로 했다.

 

먼저, 실행중인 Docker Service를 중지시킨다.

systemctl stop docker

 

Docker 종료시에 다음과 같은 내용이 출력된다면

systemctl stop docker  
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

 

아래 명령어를 통해 해결 가능하다.

systemctl stop docker.socket

 

이제 현재 Docker 가 사용중인 디스크 공간의 경로를 변경하기 위해 vi 편집기로 docker.service 파일을 오픈한다.

vi /usr/lib/systemd/system/docker.service

 

아래와 같이 --data-root=/mnt/md1/docker 내용을 추가해준다. (해당 경로는 저의 디스크 경로를 기준으로 작성하였기 때문에 본인의 디스크 경로를 확인하여 작성해주세요!)

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/mnt/md1/docker
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

 

기존 Docker 경로에 있던 파일들을 변경된 디스크 공간 경로로 복사한다.

cp -rp /var/lib/docker /mnt/md1/

 

Docker Service를 재시작 한다.

systemctl daemon-reload
sudo systemctl start docker

 

아래는 변경된 Docker Root 경로를 확인할 수 있는 명령어이다.

docker info | grep "Docker Root Dir"
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함