Docker를 설치하면 root 드라이브를 사용하도록 설정됩니다. 이 경우 나중에 스토리지가 부족하게 야기하게 될 수 있기 때문에 데이터를 저장하는 위치를 변경해 두는 것이 좋습니다. 특히, 운영 중인 시스템이라면 반드시 변경해 두셔야 스토리지 때문에 서비스가 중단되는 위기를 피할 수 있습니다. ( 실제로 제가 이 문제로 서비스가 중단되는 경험을 했었습니다. -_-;; )
Ubuntu
ubuntu에서 docker는 이미지와 컨테이너에서 사용하는 스토리지는 /var/lib/docker 하위를 사용합니다. 이 위치를 /data/docker/로 변경하려고 합니다. 모든 작업을 하기 전에 Docker를 중지하고, 작업을 마친 후에 Docker를 재시작해주어야 합니다. 이 방법 말고도 심볼릭 링크를 사용해서 변경하는 방법도 있습니다. 심볼릭 링크를 사용하는 경우, 옵션을 수정하지 않아도 되는 장점이 있지만, 저는 좀 더 명시적으로 변경하는 것을 선호합니다.
# docker service stop
$ service docker stop
# 이동할 디렉토리 생성
$ mkdir -p /data/docker
이제 Docker option을 변경합니다. /etc/docker/daemon.json 에 data-root 항목을 찾아 새로 생성한 폴더를 적어 줍니다.
# /etc/docker/daemon.json
...
"data-root": "/data/docker",
...
Docker를 재시작해서 작업을 마무리하면, 데이터 저장 위치는 변경되게 됩니다.
$ service docker start
Windows10 / MacOS
윈도우10과 MacOS에는 DockerDesktop 앱을 설치해서 docker를 사용할 수 있습니다. ( 윈도우10 홈에디션의 경우 DockerDesktop을 사용할 수 없고, Docker Toolbox를 사용해야 합니다. ) 구동 OS만 다르고 서로 동일한 앱이기 때문에 UX도 유사하고, 데이터 저장 위치를 변경하는 방법도 동일합니다.
DockerDesktop을 설치하고 docker를 실행하면 윈도우10에선 C:\ProgramData\DockerDesktop\vm-data\ 에 데이터를 저장합니다. MacOS의 경우에는 /Users/username/Library/Containers/com.docker.docker/Data/ 에 저장합니다. 이 위치를 변경하기 위해서 시스템 트레이에서 DockerDeskTop 앱의 설정( 윈도우10 : setup, MacOS : Preferences... )을 눌러 Resources 탭을 선택합니다. 이제 우측 하단에 보이는 Disk Image Location에 변경할 위치를 지정해 주고 Docker를 다시 시작해 주면 Image와 Container관련 리소스들은 새로 지정한 곳에 저장되게 됩니다.
- 끝
2021-01-19
간혹, Resources에 ADVACED라는 메뉴가 보이지 않는다고 하시는 분이 계셔서 내용 추가합니다. 만약 윈도우즈에서 WSL2 통합 기능을 사용하시다면 위 메뉴는 보이지 않습니다. 이 때는 WSL2 볼륨을 사용하는 것 같고, (공식적으로는) 위치를 변경할 수는 없는 것 같습니다.