본문 바로가기
DevOps/Docker

[Docker] 도커 볼륨 정리, Docker, Docker-compose적용

by 스파이디웹 2024. 3. 6.
728x90

컨테이너는 삭제가 될 때 자체 파일 시스템이 사라지게 되는 특성 때문에, 데이터가 다 사라지게 됩니다.

따라서 볼륨을 마운트해서 이와 같은 문제를 해결해야 합니다.

 

1. 볼륨이란?

  • 볼륨이란 호스트 머신의 폴더(로컬 컴퓨터 폴더) - 저장 공간 자체
  • 도커가 인식하는 호스트 머신
  • 볼륨은 도커 컨테이너 내부의 폴더에 매핑

2. 볼륨이 필요한 이유

볼륨의 가지는 의미는 컨테이너 내부 폴더와 컨테이너 외부 폴더를 연결하는 것

로컬폴더와 내부 폴더는 격리되어 있으나 볼륨을 이용해 연결이 가능하도록 만들 수 있다는 의미


3. 볼륨 종류

1) 익명 볼륨

익명 볼륨이란 컨테이너가 존재하는 동안에만 실제로 존재하는 볼륨을 의미

 

2) 명명 볼륨

명명 볼륨이란 컨테이너가 컨테이너가 종료된 후에도 볼륨이 유지가 되는 것을 의미


4. 마운트(mount)

물리적인 장치를 특정 디렉터리에 연결시켜주는 것

1) 볼륨 마운트

  • 도커가 생성하고 관리하는 방식
  • 도커에 의해 볼륨이 생성되고 도커에 의해 관리되는 방식으로 볼륨이 로컬 디렉터리에 마운트 될 경우 바인드 마운트와 유사하게 동작
  • 볼륨을 생성하면 자동으로 아래의 경로에 볼륨이 마운트(마운트 포인트)
  • /var/lib/docker/volumes/

2) 바인드 마운트

  • 바인드 마운트의 경우 호스트의 로컬경로를 직접 지정하여 볼륨을 마운트하는 방식
  • 해당 방식은 도커가 아니기 때문에, 도커프로세스와 non-도커프로세스 간의 차이가 발생할 수 있기 때문에 권장하지 않는 방식

3) tmfs 마운트

  • 파일시스템 대신 메모리에 데이터를 저장하는 방식을 의미
  • 리눅스에서만 가능

5. 볼륨 생성

1) docker

# 볼륨 생성
$ sudo docker volume create 볼륨명
# 생성한 볼륨 확인(리스팅)
$ sudo docker volume ls
# 생성한 볼륨 상세 정보
$ sudo docker volume inspect 볼륨명

마운트

sudo docker run --name 컨테이너이름 -d -p 서버포트:컨테이너포트 -v 볼륨이름:볼륨경로 이미지

2) docker-compose

docker-compose.yml

version: '2'

  kafka:
    image: bitnami/kafka:3.3.2
    hostname: kafka
    container_name: kafka
    volumes:# 볼륨 마운트
      - kafka-data:/var/lib/kafka/data
...


volumes:# 볼륨 생성
  kafka-data:

이후에 docker-compose up을 통해 컨테이너를 띄우면 마운트 된 채로 띄워지게 됨

728x90

댓글