본문 바로가기
  • 오늘처럼
소프트웨어 아키텍처/Docker

Docker - data directory 변경하기

by bluefriday 2021. 9. 23.
반응형

Kubernetes 클러스터의 컨테이너 런타임으로 많이 사용되는 docker 는, 최초 apt/yum 등의 패키지 관리툴로 설치하게 되면 데이터 디렉토리를 별도로 묻지 않고 기본 값으로 설정한다. 이 기본 경로는 '/var/lib/docker' 디렉토리로 이 경로 하위에 컨테이너의 물리적 이미지를 저장하고 또 컨테이너가 구동되었을 때 이미지 레이어 외의 컨테이너 레이어 정보를 저장하게 된다. 여기서는 docker 의 기본 데이터 디렉토리를 변경하는 방법에 대해 정리한다.

Docker data directory 확인하기

docker 데몬이 구동될 때 초기 설정(1-1 항목 참조)을 이용하여 구동되며 해당 설정은 다음의 명령어로 확인할 수 있다.

[root@localhost:/] docker info | grep "Storage Driver"
 Storage Driver: overlay2
 
[root@localhost:/]docker info | grep "Docker Root Dir"
 Docker Root Dir: /var/lib/docker

[root@localhost:/]

위와 같이 기본 데이터 디렉토리는 '/var/lib/docker' 으로 지정된다. 특히 'overlay2' 파일시스템을 스토리지 드라이버로 사용하는 경우 데이터 디렉토리 하위의 overlay2 디렉토리('/var/lib/docker/overlay2) 에 컨테이너 이미지들이 저장되며, 'docker images' 를 사용할 경우 이 디렉토리를 조회하여 도커 이미지 목록을 보여준다. 

 

Docker data directory 변경하기

도커의 데이터 디렉토리는 다음의 2가지 방법으로 변경할 수 있으며 2가지 방법 모두 설정을 변경 후 적용하기 위해  docker 프로세스의 재시작이 필요하다.

방법1. /usr/lib/systemd/system/docker.service 파일 수정

Docker의 시스템 실행 파일을 열어 dockerd 프로세스를 시작하는 파일에 데이터 디렉토리에 대한 옵션을 추가해준다. 하단과 같이 'ExecStart' 항목에 '--data-root=<디렉토리>' 파라미터를 추가한 후 재시작해준다. 

[root@localhost:/] cat /usr/lib/systemd/system/docker.service
[Unit]
...

[Service]
...
ExecStart=/usr/bin/dockerd --data-root=<디렉토리> -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
...

 

방법2. /etc/docker/daemon.json

도커의 설정 파일을 수정할 수 있다. 하단과 같이 설정파일을 수정한 후에 프로세스를 재시작한다.

[root@localhost:/] cat /etc/docker/daemon.json
{
	...
	"data-root" : <디렉토리>
	...
}

 

컨테이너 이미지와 컨테이너 런타임에 대한 데이터 저장이 모두 이 디렉토리 하위에서 관리 되므로, 스토리지 관리가 중요하다. 많은 컨테이너를 구동하거나, 여러 도커 이미지를 사용하는 경우 이 공간을 별도의 블록스토리지로 할당하여 충분한 공간을 확보하고 관리해주도록 한다.

 

'소프트웨어 아키텍처 > Docker' 카테고리의 다른 글

Docker registry API - push  (1) 2021.10.14
리눅스 환경(온라인)에 도커 설치하기  (0) 2021.09.24
Docker registry API - pull  (0) 2021.09.22
Docker compose 의 사용  (0) 2021.09.07
Docker and container runtime  (0) 2021.08.30

댓글