1. 개요

<Docker 가상 환경 구축 입문>의 <Chapter 7-2. volume을 사용해보자>를 읽고 정리한 내용으로,

이번 문서의 주된 내용은 Docker의 마운트 타입 중 하나인 volume의 사용방법입니다.

 

2. volume의 생성/확인/삭제 커맨드

  • volume 생성 
    $ docker volume create [volume명]
  • volume 확인
    $ docker volume ls
    $ docker volume inspect [volume명]
  • volume 삭제
    $ docker volume rm [volume명]

 

3. volume을 마운트하기

  • volume을 마운트할 때, 존재하지 않는 volume명을 지정하면 새로운 volume을 생성함
  • 볼륨을 docker 컨테이너에 마운트하기 위해서는 1) -v 옵션을 사용하는 방법 과 2) --mount 옵션을 사용하는 방법이 있음
  • -v 옵션을 사용하는 방법
    -v [volume명]:[마운트 할 path]
    $ docker run -itd --name c1 -v vol1:/app busybox
    
  • --mount 옵션을 사용하는 방법
    --mount source=[volume명],target=[마운트 할 path]
    $ docker run -itd --name c2 --mount source=vol1,target=/app busybox
  • 컨테이너에 존재하는 디렉토리에 신규 volume을 마운트하면, 해당 디렉토리에 이미 있던 파일이 volume에 복사됨
    --mount source=[volume명],destination=[마운트 할 path]
    $ docker run -itd --name c3 --mount source=vol2,destination=/var busybox
  • volume은 디폴트로 read/write 가능한 상태로 마운트되며, readonly 상태로 지정할 수 있음
    --mount source=[volume명],target=[마운트 할 path],readonly
    $ docker run -itd --name c4 --mount source=vol3,target=/app,readonly busybox
    $ docker inspect c4
    ...
            "Mounts": [
                {
                    "Type": "volume",
                    "Name": "vol3",
                    "Source": "/mnt/sda1/var/lib/docker/volumes/vol3/_data",
                    "Destination": "/app",
                    "Driver": "local",
                    "Mode": "z",
                    "RW": false,
                    "Propagation": ""
                }
            ]
    ...