728x90

도커를 가지고 놀면서 공부하던 도중 volume에 대한 궁금증이 생겼다.

 도커 컨테이너가 삭제될 경우 저장되어 있던 데이터는 모두 삭제되는 걸로 알고있다.

그래서 컨테이너가 삭제되어도 저장된 데이터는 삭제되지 않도록 볼륨을 사용하거나 도커 컨테이너가 띄워지는 호스트에 바인드 마운트를 사용한다.

 바인드 마운트는 호스트 시스템에 지정한 위치에 파일이 저장되어 컨테이너가 삭제되어도 데이터는 남아있는걸 직접 확인할 수 있다. 그렇다면 볼륨은 어떻게 데이터를 유지할까 라는 생각이 들었다. 윈도우 환경에서는 docker-desktop을 켜고 메뉴에서 volumes를 클릭하면 생성된 volume 정보를 확인할 수 있다. 하지만 여기서 더 나아가서 실제로 호스트 시스템에 어디에 볼륨이 저장되는지 확인하고 싶어졌다. 만약 호스트 시스템에 저장이 되지않는다면 어떻게 데이터를 유지하는지 내 머리로는 이해가 되지 않았기 때문이다.

 이제부턴 그냥 볼륨이라고 하겠습니다. 먼저 볼륨과 관련된 정보를 확인하자.

생성한 볼륨이 있다면 해당 볼륨을 대상으로 하면되고 생성한 볼륨이 없다면 먼저 생성부터 해준다.

docker volume create --name myvolume

여기서 'myvolume'대신 원하는 이름을 적어주면 된다.

그 다음 생성된 볼륨의 정보를 확인해보자.

docker volume inspect myvolume

# 결과
[
    {
        "CreatedAt": "2023-11-16T08:31:14Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
        "Name": "myvolume",
        "Options": null,
        "Scope": "local"
    }
]

여기서 살펴봐야할 곳은 Mountpoint 이다. 여기에 해당하는 호스트 시스템의 경로에 볼륨이 저장되어 있다. 하지만 윈도우 환경에서는 C나 D 같은 드라이브 안에서 아무리 찾아도 해당 디렉토리는 발견되지 않는다. 

여기서 생각해봐야할게 도커를 설치할 때 이다. 윈도우에서 도커를 사용하기 위해서 docker-desktop을 설치하면서 WSL 이라는 것과 관련된 것을 추가로 설치한 적이 있을 것이다. 윈도우에서 볼륨은 WSL 에서 확인 가능하다. 그럼 WSL과 관련된 디렉토리에 어떻게 접근하냐. 

아마 별도로 설정을 하지 않았다면 사진 과 같이 파일 탐색기를 켰을 때 왼쪽에 Linux가 보일 것 이다.

여기서 우리는 볼륨이 저장된 위치를 찾으면 된다. 하지만 나의 경우에는 docker-desktop, docker-desktop-data 모두에서 '/var/lib/docker/volumes/myvolume/_data ' 를 찾을 수 없었다. 그래서 모든 파일을 다 뒤져보았고 결과적으로

'docker-desktop-data\data\docker\volumes'

에 모든 볼륨이 저장되어 있는 것을 확인할 수 있었다.(이 부분은 개개인 마다 차이가 있을 수도 있다.)  왜 docker inspect에 표시되는 경로와 실제 저장경로에 차이가 있는지는 아직 모르지만 그래도 궁금증의 원인이었던 '볼륨은 호스트 시스템에서 어디에 물리적으로 데이터를 저장하는가' 에 대한 답을 얻을 수 있었다.

 이제 바인드 마운트를 하지 않고 볼륨을 이용하는 경우에도 GUI로 편리하게  호스트 시스템과 도커 컨테이너간에 파일 이동을 할 수 있게 되었다.

'코딩 공부 > 도커' 카테고리의 다른 글

nginx 로드밸런싱 체험 with docker-compose  (0) 2024.02.18

+ Recent posts