본문 바로가기
Hardware/Home Assistant

Docker 데이터 위치 변경

by lovey25 2021. 1. 2.

Docker는 기본 설정이 루트 경로에 데이터를 저장하도록 하고 있습니다. 라즈베리파이에서 SD카드를 메인으로 사용하게 되면 공간 부족을 쉽게 겪을 수 있기 때문에 외장 SSD로 데이터 저장 경로를 옮겨보겠습니다. 그리고 SD카드보다 SSD가 속도도 빠르니까 성능 개선 효과도 기대하고 있습니다.

먼저 SSD가 마운트 되어 있어야 하니까 SSD 마운트에 대한 내용은 아래 포스팅을 참고해 주세요.

 

QUAD Sata HAT, SSD 자동 마운트

라즈베리파이에서 외장 SSD를 사용하는 경우 SSD 드라이브를 부팅 시 자동으로 마운트 시키는 방법입니다. 먼저 라즈베리파이 SSD를 연결했다면 SSD 드라이브를 잘 인식하고 있는지 확인합니다. "su

kwonkyo.tistory.com

도커 데이터를 저장할 새로운 폴더를 생성합니다.

전 SSD가 마운트 된 폴더인 /home/pi/externalSSD에 "docker"라는 폴더를 만들어 주었습니다. 

도커의 기본 폴더 위치를 확인합니다.

"/var/lib/docker"로 확인됩니다.

도커 서비스를 중지합니다.

도커는 중지되는데 docker.socket은 계속 동작한다고 나오네요. 한 번 더 docker.socket도 꺼줍니다.

이제 원본 데이터를 새로 만들어준 폴더로 복사합니다. 폴더 접근 제한이 있어서 "sudo cp -R /var/lib/docker ~/externalSSD"를 사용합니다. -R 옵션은 하위 폴더를 모두 복사하는 옵션입니다.

복사가 완료되었습니다. 폴더 권한도 원래 폴더와 동일하게 모두 실행 권한이 부여되어 있는 걸 확인할 수 있습니다.

 

이제 도커의 데이터 위치를 변경하는 설정을 하는 단계인데 검색해보면 크게 2가지 방법이 설명되어 있었습니다. 하나는 "/etc/docker/daemon.json"파일을 수정하는 것이고 나머지 하나는 "/lib/systemd/system/docker.service"를 수정하는 것이었습니다.

방법 1. 

"/etc/docker/daemon.json"파일에 도커의 데이터 폴더 위치를 변경하는 옵션을 추가합니다.

첫 번째 출 "data-root"옵션이 추가되었습니다.

그런데 이 방법은 제 경우 정상적으로 동작하지 않았습니다. 검색을 좀 해봤지만 해결되지 않았고 그래서 바로 다음 방법 시도하였습니다.

방법 2.

이번엔 "/lib/systemd/system/docker.service" 설정을 수정합니다. 편집기로 파일을 열고나서 "ExecStart" 부분을 찾습니다. 그리고 뒤에 "--data-root=/home/pi/externalSSD/docker" 옵션을 추가해줍니다.

이제 설정이 끝났습니다.

중지했던 도커 서비스를 재시작해 보겠습니다. 재시작하는 방법은 데몬을 다시 로딩시키고 도커 서비스를 시작합니다. 그리고 다시 도커의 위치를 확인해보면...

도커의 Root 경로가 변경되었습니다. 

 

끝!

728x90

댓글0