docker volume

JinUk Lee·2024년 11월 8일
0

Docker

목록 보기
10/10

도커 볼륨은 휘발성인 컨테이너에서 데이터를 유지하고 싶을때 사용하는 기능이다.

volume 이라고 통틀어서 표현하지만 3가지 방식이 있다.

  • bind mount
  • volume
  • tmpfs mount

bind mount

바인드 마운트는 호스트의 디렉토리를 직접 공유하는 기능이다.

처음 연결할때는 호스트 -> 컨테이너의 방향이지만, 일단 공유가 되면 컨테이너에서 변경된 사항은 호스트에도 적용이 된다.

volume

docker를 통해 볼륨을 생성하여 사용한다. (docker volume create)

실제 생성된 볼륨은 /var/lib/docker/volumes 내부에 볼륨 이름의 경로를 생성하여 저장된다.

또한, 여러 컨테이너에 동시에 마운트할 수 있다.

Tmpfs mount

파일 시스템이 아닌 호스트 메모리에만 저장이 되며 컨테이너가 중지되면 파일이 유지되지 않는다.

리눅스에서 도커를 실행하는 경우에만 사용할 수 있다.

바인드 마운트 vs 볼륨 사용법

두 유형 각각의 사용법을 알아보자

### docker-compose.yml

services:
  backend:
    build:
      context: ./djangobase2
      dockerfile: Dockerfile
    image: mechauk418/backend:latest
    ports:
      - "8000:8000"
    volumes:
      - "/home/ubuntu/logs:/app/logs"

    command: gunicorn config.wsgi:application --bind 0.0.0.0:8000

바인드 마운트의 경우 volumes 에서 [호스트의 경로]:[컨테이너의 절대 경로]로 마운트를 걸어준다.

이때, 반드시 컨테이너의 경로는 절대경로를 사용해야 한다. (상대 경로를 사용 시 invalid mount path: mount path must be absolute 에러 발생)

다음은 볼륨의 사용법을 알아보자

우선 docker volume create [볼륨 이름]으로 볼륨을 만들어준다.

여기선


services:
  backend:
    build:
      context: ./djangobase2
      dockerfile: Dockerfile
    image: mechauk418/backend:latest
    ports:
      - "8000:8000"
    volumes:
      - "[볼륨 이름]:/app/logs"
      - "[볼륨 이름2]:/app/logs"

    command: gunicorn config.wsgi:application --bind 0.0.0.0:8000

volumes:
  [볼륨 이름]:
    external: true # 기존에 생성한 볼륨을 사용한다.
  [볼륨 이름2]: # 새 볼륨을 생성한다.

log를 구현하면서 volume에 대해 공부해보았다.

profile
개발자 지망생

0개의 댓글