[Docker] 도커 볼륨

소개

  • 안녕하세요. 오늘은 도커 볼륨 3번째 시간으로, docker volume 명령어를 사용하는 방법에 대해서 알려 드리려고 합니다.
  • 지금까지 한 방법과 같이 호스트와 볼륨을 공유해 컨테이너의 데이터를 보전하거나 --volumes-from 옵션을 활용하는 것도 나쁜 방법은 아닙니다.
  • 그러나, 도커 자체에서 제공하는 볼륨 기능을 활용해 데이터를 보존할 수도 있습니다.
  • 이번 포스팅에서는 도커 자체에서 제공하는 볼륨 기능을 활용해 데이터 보존하는 방법에 대해서 학습해 보도록 하겠습니다.


docker volume 명령어

  • 볼륨을 다루는 명령어는 docker volume 으로 시작합니다.
  • docker volume create 명령어로 볼륨을 생성합니다.
  • 다음 명령어는 myvolume이라는 볼륨을 생성합니다.
> docker volume create --name myvolume
myvolume
  • docker volume ls 명령어를 통해 생성된 볼륨을 확인합니다.
> docker volume ls
DRIVER    VOLUME NAME
local     myvolume
  • 볼륨을 생성할 때 플로그인 드라이버를 설정해 여러 종류의 스토리지 백엔드를 쓸 수 있지만 여기서는 기본적으로 제공되는 드라이버인 local을 사용합니다.
  • 해당 볼륨은 로컬 호스트에 저장되며 도커 엔진에 의해 생성되고 삭제 됩니다.
  • 이제 다음으로, myvolume이라는 볼륨을 사용하는 컨테이너를 생성합니다.
  • 호스트와 볼륨을 공유할 때 사용한 -v 옵션의 입력과는 다르게 다음과 같은 형식으로 입력하면 됩니다.
> docker run -i -t --name myvolume_1 -v myvolume:/root ubuntu

Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Already exists
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest

root@37632f259d32:/# echo hello, volume! >> /root/volume
  • [볼륨의 이름]:[컨테이너의 공유 디렉토리] 형태로 명령어 입력합니다.
  • 위의 예시에서 생성되는 컨테이너는 볼륨을 컨테이너의 /root 티렉토리에 마운트하므로 /root 디렉토리에 파일을 쓰면 해당 파일이 볼륨에 저장됩니다.
  • 위의 명령어를 통하여 /root 디렉토리에 volume 이라는 파일을 생성했습니다.
> docker run -it --name myvolume_2 -v myvolume:/root/ ubuntu
root@d8b8a39c45b0:/# cat /root/volume
hello, volume!
  • 위와 같이 myvolume_2 컨테이너를 생성하여 myvolume 볼륨을 쓰면서 실제로 volume 파일이 생성되는지 확인합니다.
  • 실행 결과, /root/volume 경로에 hello, volume! 라는 문구가 출력되는 것을 확인할 수 있습니다.


docker inspect 명령어

  • docker inspect 명령어를 사용하면 myvolume 볼륨이 실제로 어디에 저장되는지 알 수 있습니다.
  • docker inspect 명령어는 컨테이너, 이미지, 볼륨 등 도커의 모든 구성 단위의 정보를 확인할 때 사용되며, 정보를 확인할 종류를 명시하기 위해 --type 옵션에 image, volume 등을 입력하는 것이 좋습니다.
  • 다음 예제는 이름이 myvolmue 인 볼륨의 정보를 출력하는 예제 입니다.
> docker inspect --type volume myvolume
[
    {
        "CreatedAt": "2021-11-08T09:58:11Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/myvolume/_data",
        "Name": "myvolume",
        "Options": {},
        "Scope": "local"
    }
]
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY