Docker - volume

Levi·2022년 8월 2일
0

Docker & Kubernetes

목록 보기
6/6

이미지 및 내용 출처 : [Fastcampus]한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online.

Docker Image Architecture

  • docker build -> Dockerfile 생성
  • image layer 내 변경 시 아래(베이스) 레이어는 변화없이 변화된 레이어의 새로운 버전 생성하며 새 레이어 생성
  • docker run 시 Read-Only 인 Image Layer와 Read-Write 인 Container Layer로 구성
    ➡️ 컨테이너 상 변경사항은 Container Layer에 저장되며 컨테이너 종료 시 삭제 (임시 데이터 저장소)

➡️ 컨테이너 상 볼륨 사용의 영구 보관을 위해

Docker volume

  • 호스트 볼륨
    $ docker run -d \
    --name [container name] \
    -v [host 디렉토리]:[container 디렉토리] \
    [container]
    : 호스트의 디렉토리를 컨테이너의 웹 루트 디렉토리로 마운트
    ✅ $(pwd) : 현재 디렉토리

  • 볼륨 컨테이너

-> data만을 보관하는 data-only container 생성 후 container가 data-only container를 volume container로 참조
$ docker run -d \
--name [container name] \
--volumes-from [volume container] \
[container]
: volume container의 볼륨을 공유
✅ docker inspect [container] : Mounts에서 volume mount 확인

  • docker 볼륨
    ➡️ docker가 제공하는 볼륨 관리 기능
    ➡️ 기본적으로 "/var/lib/docker/volumes/${volume-name}/_data"에 데이터 저장

$ docker volume create --name [volume-name] : 도커 볼륨 생성
ex)
$ docker run -d \
--name [container] \
-e MYSQL_DATABASE=fastcampus \ ✅ mysql db 이름 지정
-e MYSQL_ROOT_PASSWORD=fastcampus \ ✅ mysql root계정 패스워드 지정
-v [volume-name]:/var/lib/mysql \ ✅ /var/lib/mysql -> mysql이 데이터를 쌓는 경로
-p 3306:3306 \
mysql:5.7
: 도커의 [volume-name] 볼륨을 mysql의 웹 루트 디렉토리로 마운트

✅ docker volume ls : 도커 볼륨 목록 확인

✅ docker volume 읽기전용 옵션
$ docker run -d \
--name [container-name] \
-v [volume-name]:/usr/share/nginx/html:ro \
[container]
: 도커의 web-volume 볼륨을 [container]의 웹 루트 디렉토리로 읽기 전용 마운트
➡️ 변경이 되서는 안되는 디렉토리나 파일 연결을 위해 사용 ex) 설정 파일 등..

profile
Jr.

0개의 댓글

관련 채용 정보