본문 바로가기
Linux

Docker - Storage path, 저장 위치 변경

by 올엠 2024. 2. 23.
반응형

Docker의 컨테이너와 이미지들은 파일 기반으로  저장되어 관리된다.

이 기본 위치는 /var/lib/docker/ 에 위치된다.

만약 컨테이너와 이미지 들이 많아진다면, 별도의 스토리지를 이용해서 용량을 관리하는 것이 좋다.

그럼 기본 저장 위치를 변경하는 방법에 대해서 알아보도록 하겠다.

가장 좋은 방법은 data-root 라는 기본 저장 위치 경로를 변경해주는 방법이다.

이를 위해서는 deamon.json(없는 경우 신규로 생성)로 관리하는 방안으로 docker 서비스를 중지한 이후, /etc/docker/ 하위에 아래와 같이 작성해 주면 된다.

(필자가 지정할 신규 경로는 /data/docker 이다)

$ sudo service docker stop

$ sudo nano /etc/docker/daemon.json

/etc/docker/daemon.json

{
    "data-root": "/data/docker"
}



이후 기존 /var/lib/docker에 존재하는 기본 Docker 파일들을 rsync를 이용해서 복사하도록 하자.

$ sudo rsync -aP /var/lib/docker/ /data/docker
sending incremental file list
./
buildkit/
buildkit/cache.db
         32,768 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=23/36)
buildkit/containerdmeta.db
         16,384 100%   15.62MB/s    0:00:00 (xfr#2, to-chk=22/36)
buildkit/metadata_v2.db
         16,384 100%   15.62MB/s    0:00:00 (xfr#3, to-chk=21/36)
buildkit/snapshots.db
         16,384 100%   15.62MB/s    0:00:00 (xfr#4, to-chk=20/36)
buildkit/content/
buildkit/content/ingest/
buildkit/executor/
containers/
image/
image/overlay2/
image/overlay2/repositories.json
             19 100%   18.55kB/s    0:00:00 (xfr#5, to-chk=15/36)
image/overlay2/distribution/
image/overlay2/imagedb/
image/overlay2/imagedb/content/
image/overlay2/imagedb/content/sha256/
image/overlay2/imagedb/metadata/
image/overlay2/imagedb/metadata/sha256/
image/overlay2/layerdb/
network/
network/files/
network/files/local-kv.db
         65,536 100%   62.50MB/s    0:00:00 (xfr#6, to-chk=6/36)
overlay2/
overlay2/l/
plugins/
plugins/storage/
plugins/storage/ingest/
plugins/tmp/
runtimes/
swarm/
tmp/
trust/
volumes/
volumes/backingFsBlockDev
volumes/metadata.db
         32,768 100%    6.25MB/s    0:00:00 (xfr#7, to-chk=0/36)

이제 작업이 거희 마무리 되었다.

기존 경로의 이름을 백업 목적으로 old라는 이름을 추가해 수정한 이후, Docker 서비스를 시작하여 정상적으로 동작하는지 확인하도록 하자.

$ sudo mv /var/lib/docker /var/lib/docker.old
$ sudo service docker start
$ sudo service docker status
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-12-22 10:40:56 UTC; 21s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 12382 (dockerd)
      Tasks: 8
     Memory: 30.9M
     CGroup: /system.slice/docker.service
             └─12382 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Dec 22 10:40:55 geip dockerd[12382]: time="2022-12-22T10:40:55.848428583Z" level=warning msg="Your kernel does not su>
Dec 22 10:40:55 geip dockerd[12382]: time="2022-12-22T10:40:55.848439183Z" level=warning msg="Your kernel does not su>
Dec 22 10:40:55 geip dockerd[12382]: time="2022-12-22T10:40:55.848696386Z" level=info msg="Loading containers: start."
Dec 22 10:40:56 geip dockerd[12382]: time="2022-12-22T10:40:56.159290925Z" level=info msg="Default bridge (docker0) i>
Dec 22 10:40:56 geip dockerd[12382]: time="2022-12-22T10:40:56.300430079Z" level=info msg="Loading containers: done."
Dec 22 10:40:56 geip dockerd[12382]: time="2022-12-22T10:40:56.670348614Z" level=warning msg="Not using native diff f>
Dec 22 10:40:56 geip dockerd[12382]: time="2022-12-22T10:40:56.670758619Z" level=info msg="Docker daemon" commit="20.>
Dec 22 10:40:56 geip dockerd[12382]: time="2022-12-22T10:40:56.670837220Z" level=info msg="Daemon has completed initi>
Dec 22 10:40:56 geip systemd[1]: Started Docker Application Container Engine.
Dec 22 10:40:56 geip dockerd[12382]: time="2022-12-22T10:40:56.734742469Z" level=info msg="API listen on /run/docker.>

[3]+  Stopped                 sudo service docker status

정상적으로 서비스가 이동된 경로에서 시작되었다면,

기존에 old 경로에 백업한 파일들이 필요 없게 된다. 따라서 충분한 테스트이후 해당 경로는 삭제해도 된다.

$ sudo rm -rf /var/lib/docker.old
 
반응형