본문 바로가기
Docker, k8s

[Docker] Centos7 docker no space left on device 해결 방법

by bryan.oh 2020. 5. 22.
반응형

Centos 7 Docker
No space left on device

 

저는 좀 더 넓은 공간으로 docker folder 를 이동하는 방법을 썼습니다.

다른 드라이브(파티션)에 공간이 있어야 합니다.

( 그게 아니라면 안쓰는 docker image 들을 삭제하는 방법을 해보세요 )

 

아래와 같이 /dev/xvda1 의 용량이 가득차서 /dev/xvdb 로 docker 의 root dir 을 옮겼습니다.

 

 

Centos 7 기준으로 설명드리겠습니다.

 

우선 docker config 열기

$ sudo vi /lib/systemd/system/docker.service

ExecStart= 를 찾아봅니다.

ExecStart=/usr/bin/docker daemon -g /home/myid/docker \

-g 뒤에 /home/myid/docker 라는 곳이 있네요.

일단 위 docker.service 수정은 잠시 후에 할거니까 q! 로 나와주시고요.

 

이 폴더를 용량이 많은 드라이브로 이동할겁니다.

$ df
명령어를 날려보면

다른 파티션에 남는 자리가 있어야 합니다.
(전 네트워크 드라이브를 마운트했습니다.)

 

폴더를 copy 하기 전에 docker 를 중단합니다.

$ sudo systemctl stop docker

 

폴더를 copy 합니다.
(move 보다는 copy 가 좀더 안전합니다. 이동 후 오류나면 기존 폴더를 다시 사용해야 하니까요.)

$ sudo cp /home/myid/docker /data

 

docker 설정변경

$ sudo vi /lib/systemd/system/docker.service

로 파일에 들어가서 

# 기존
ExecStart=/usr/bin/docker daemon -g /home/myid/docker \

# 변경
ExecStart=/usr/bin/docker daemon -g /data/docker \

 

docker 를 다시 시작합니다.

$ sudo systemctl daemon-reload
$ sudo systemctl start docker

 

그리고 docker images , docker ps -a 등등 명령어 날려서 확인해 보시면 됩니다.

 

잘 된다! 그러면

기존의 docker directory 를 삭제하시면 됩니다.

혹시 모르는 오류가 발생해서 docker 가 실행되지 않거나

docker images 와 container 들이 없다면 
docker stop -> docker.service 파일에서 기존 folder 로 변경 -> daemon-reload -> docker 시작 순으로 롤백하시면 됩니다.

 

728x90
반응형

댓글