🤓 스터디/🐳 [Udemy] Docker & Kubernetes 실전가이

[ Udemy : Docker & Kubernetes 실전가이드 (3) ] 데이터 관리 및 볼륨으로 작업하기

Mr.Baobab 2025. 3. 12. 19:34
반응형
PORT=3000

 


 

1. 볼륨

데이터를 영구적으로 저장하기 위해 호스트 컴퓨터에 폴더를 생성해 저장하는 것

 

 

 


 

2. 볼륨의 필요성

컨테이너에 데이터를 저장하면 Read-Write 레이어에 추가해 관리하는데, 이는 컨테이너가 삭제되면 사라진다는 큰 단점이 있다. 이를 보완하려면 영구적으로 데이터를 저장( 회원의 입력정보 등 ) 볼륨을 통해 저장하면 된다.

 

 


 

3. 볼륨 추가하는 방법

볼륨을 추가하는 방법은 "Dockerfile 에 추가", "docker volume create 명령어" 2가지가 있다.

 

먼저 "Dockerfile 에 추가"같은 경우는

Dockerfile에 작성

Volume ["저장할 경로"] -> 익명 볼륨

 

이런식으로 따로 폴더의 경로를 지정해 주면 된다.

 

다음 "docker volume create 명령어"의 경우

$docker volume create my_volume

이후 

$docker run -d --name my_container -v my_volume:/app busybox

 

를 통해 볼륨을 만들고 docker run 명령어에서 -v 플래그를 사용해 연결해주면 된다


 

4. 볼륨 종류

1) 도커 볼륨 (Docker Volumes)

 

도커에서 기본적으로 제공하는 저장소 관리 방식이며, 컨테이너와 독립적으로 데이터를 유지할 수 있다.

 

✅ 익명 볼륨 (Anonymous Volumes)

  • 컨테이너가 삭제되면 함께 사라짐
  • 특정 컨테이너 내부 데이터를 저장하는 데 유용 (덮어쓰기 방지)
  • 도커가 직접 관리하는 방식이 아니라 호스트 머신에 폴더를 생성함
  • 자동 생성되며, 시간과 공간적으로 효율적

✅ 명명 볼륨 (Named Volumes)

  • 특정 컨테이너에 종속되지 않음 (여러 컨테이너에서 공유 가능)
  • 컨테이너가 종료되어도 데이터 유지됨
  • 도커 파일에서 직접 생성할 수 없고, 명령어로 추가해야 함
docker volume create my_volume docker run -v my_volume:/app my_image

 

2) 바인드 마운트 (Bind Mounts)

호스트 머신의 특정 디렉토리를 컨테이너 내부로 직접 마운트하는 방식.

  • 컨테이너 내부 파일을 직접 수정 가능
  • 변경 사항이 즉시 적용되므로 리빌드할 필요 없음
  • 주로 소스 코드나 설정 파일을 실시간으로 반영하는 데 사용
  • 명령어로 절대경로를 지정해야 함
docker run -v /host/path:/container/path my_image
  • 컨테이너 내부 파일이 덮어쓰기될 수 있어 주의가 필요
    • 예외 처리를 위해 익명 볼륨 추가 가능

3) 읽기 전용 볼륨 (Read-Only Volumes)

 

컨테이너에서 볼륨의 데이터를 수정할 수 없도록 설정할 수 있다.

docker run -v my_volume:/app:ro my_image
  • :ro 옵션을 추가하면 읽기 전용 모드로 설정됨

4) 기타 관련 기능

✅ 도커 Ignore로 COPY 제한

  • .dockerignore 파일을 사용하여 특정 파일을 컨테이너에 복사하지 않도록 설정
  • 예시:
node_modules/ .env

 

✅ 빌드 타임 인수 (Build Arguments)

  • Dockerfile에서 ARG 키워드를 사용하여 빌드 시 값을 전달 가능
ARG PORT=8080
  • 터미널에서 값 설정 가능
docker build --build-arg PORT=3000 -t my_image .

✅ 환경변수 (Environment Variables)

  • Dockerfile 내부에서 ENV 키워드로 설정 가능
ENV PORT 80 EXPOSE $PORT
  • 컨테이너 실행 시 -e 옵션을 사용해 설정 가능
docker run -e PORT=3000 my_image
  • .env 파일을 활용해 환경변수를 관리 가능
    • .env 파일 생성

      PORT
      =3000
       
      • 컨테이너 실행 시 적용
         
        docker run --env-file ./.env my_image

 


🙄 느낀점

머리로는 이해하는데 손은 이해하지 못하는 것 같다. 좀더 사용해 봐야 감을 잡을듯??

 

 

반응형