Docker Root Directory 변경

Ubuntu에서 Docker Root Directory 변경하기

Docker blog에 있는 내용에 따라 Ubuntu에 apt repository를 추가하고 Docker를 설치한 경우 image나 container 등이 저장되는 기본 경로는 /var/lib/docker/이다.

1단계 검색

가장 많이 나오는 내용은 Docker 기본 설정파일 /etc/default/docker에 graph option을 추가해 경로를 변경하라는 것이다. 거의가 3~4년 전 글들이라 찜찜하긴 하지만 일단 따라가 본다.

$ ls /etc/default/docker
/etc/default/docker

설정파일이 있다! 열어보면,

...
# THIS FILE DOES NOT APPLY TO SYSTEMD
...

Ubuntu가 15.10 버전부터 systemd를 기본으로 채택했으니 지금 사용하는 버전인 16.04에서는 안 될 것 같지만…

역시 안 된다.

2단계 또 검색

Docker Success Center에 글이 있다. systemd service 파일을 수정하는 방식이다.

$ systemctl edit docker.service

아무 내용이 없다. 원본이 어떻게 생긴지 알아야 수정을 해도 할 것 아닌가.

systemctl edit 명령은 원본 service 파일을 유지하며 unit 파일을 만들어 일부를 변경하는 기능이다. 자세한 사항은 여기 참고.

또 실패

3단계 Service 파일 수정 (성공!)

결국 docker.service 파일을 찾아 직접 수정해서 성공했다.1

$ systemctl status docker
docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
...

docker.service 파일은 /lib/systemd/system/docker.service에 있다.

# 아래 부분을 찾아
ExecStart=/usr/bin/dockerd -H fd://
# 이렇게 고친다.
ExecStart=/usr/bin/dockerd -H fd:// -g {root directory}

그런데 dockerd의 option을 보면 -g flag가 없다.

$ dockerd -g --help
WARN[0000] the "-g / --graph" flag is deprecated. Please use "--data-root" instead

-g / --graph flag는 deprecate 됐으니 --data-root를 사용하란다.

Docker release note를 보면 17.05.0-ce 버전에 해당 flag가 deprecate 되었다.


  1. 그렇다. 이 글은 단순히 Docker의 root directory를 변경하는 내용이다. ↩︎