CodeGym /행동 /Docker SELF /Docker에서 데이터 저장 기본

Docker에서 데이터 저장 기본

Docker SELF
레벨 19, 레슨 0
사용 가능

1.1 볼륨 (Volumes)

Docker에서 데이터 저장은 컨테이너 작업의 중요한 부분이야. 컨테이너 자체는 휘발성이어서, 컨테이너를 멈추거나 삭제하면 그 안의 데이터는 사라져버려. 실행 간 데이터 보존과 장기 저장을 위해 Docker는 두 가지 주요 기술을 제공해: 볼륨(volumes)과 바운드 디렉토리(bind mounts).

볼륨 (Volumes)

볼륨은 데이터 저장을 위해 Docker가 관리하는 리소스야. 이건 컨테이너의 생명 주기와는 독립적으로 존재해서 데이터를 장기적으로 보관할 수 있게 해줘. 볼륨은 Docker로 생성하고 관리할 수 있어, 컨테이너 외부에서 데이터를 저장하는 편리한 방법을 제공해.

볼륨 사용의 장점

  1. 호스트로부터 분리: 볼륨은 Docker가 관리하는 호스트의 특정 디렉토리에 저장되며, 따라서 격리성을 제공해.
  2. 관리 용이: Docker는 볼륨을 생성, 삭제 및 관리하기 위한 편리한 명령어를 제공해.
  3. 호환성 및 이식성: 볼륨은 다양한 호스트 간에 쉽게 이동이 가능하며, 다른 컨테이너에서도 사용할 수 있어.

볼륨 생성 및 사용 예제

볼륨 생성:

Terminal

docker volume create my_volume

컨테이너에서 볼륨 사용:

이 예제에서는 볼륨 my_volume이 컨테이너 my_container 내부의 /data 디렉토리에 마운트되고 있어.

Terminal

docker run -d --name my_container -v my_volume:/data nginx

1.2 바인드 디렉토리 (Bind Mounts)

바인드 디렉토리는 호스트의 특정 디렉토리를 컨테이너에 마운트할 수 있게 해줘. 이렇게 하면 컨테이너가 호스트에 있는 파일과 디렉토리를 사용할 수 있게 되는데, 특히 개발과 테스트를 위해 로컬 파일로 작업할 때 유용하지.

바인드 디렉토리 사용의 장점:

  1. 호스트 파일에 직접 접근: 컨테이너는 호스트에 있는 파일과 디렉토리를 바로 사용할 수 있어.
  2. 개발 편리성: 개발자는 호스트의 파일을 쉽게 수정하고, 컨테이너에서 실시간으로 그 변화를 확인할 수 있어.
  3. 유연성: 바인드 디렉토리는 호스트의 아무 디렉토리나 사용할 수 있어서 데이터 관리에 큰 유연성을 제공해.

바인드 디렉토리 사용 예제

바인드 디렉토리를 사용해 컨테이너 실행:

Terminal

docker run -d --name my_container -v /path/on/host:/data nginx

이 예제에서는 호스트의 /path/on/host 디렉토리가 my_container 컨테이너 안의 /data 디렉토리에 마운트돼.

볼륨과 바인드 디렉토리 비교:

특징 볼륨 바인드 디렉토리
데이터 저장 Docker가 관리 사용자가 관리
격리성 호스트 파일 시스템과 분리 호스트 파일 시스템 사용
퍼포먼스 Docker에 최적화 호스트 파일 시스템에 의존
적용 가능성 장기 데이터 저장 개발 및 테스트

1.3 실습 예제

실습 사용 예

예제 1: 데이터베이스를 위한 볼륨 사용

데이터베이스의 지속적인 데이터 저장을 위해 볼륨을 사용할 수 있어.

볼륨 생성:

Terminal

docker volume create db_data

볼륨을 사용한 데이터베이스 컨테이너 실행:

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

예제 2: 웹 개발을 위한 바이딩 디렉토리 사용

웹 애플리케이션 개발을 위해 바이딩 디렉토리를 사용하면 로컬 파일의 변경 사항이 컨테이너에 즉시 반영돼.

바인딩 디렉토리를 사용한 컨테이너 실행:

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

이 예제에서는 현재 작업 디렉토리 my_website가 nginx 컨테이너의 디렉토리 /usr/share/nginx/html에 마운트돼.

3
과제
Docker SELF, 레벨 19, 레슨 0
잠금
데이터 저장을 위한 볼륨 생성
데이터 저장을 위한 볼륨 생성
3
과제
Docker SELF, 레벨 19, 레슨 0
잠금
개발을 위한 로컬 디렉토리 사용
개발을 위한 로컬 디렉토리 사용
3
과제
Docker SELF, 레벨 19, 레슨 0
잠금
데이터베이스 데이터를 볼륨에 저장하기
데이터베이스 데이터를 볼륨에 저장하기
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION