Docker Volume 연결 방식 및 방법

도커 레이어 아키텍처

 

Image Layer 

  •  dockerfile 기준으로 이미지가 빌드 됩니다.
  • 읽기 전용으로 가동이 됨.
  • 총 5개의 레이어 기준으로 빌드가 됩니다. 
    • Layer 1: Ubuntu 관련된 내용을 저장
    • Layer 2: apt 변경된 내용을 저장
    • Layer 3: 파이썬 코드 관련된 내용 저장
    • Layer 4: 소스 코드를 저장
    • Layer 5: Entry Point를 저장

 

Container Layer 

  • 쓰기 전용 레이어를 말함. 
  • 컨테이너를 종료시 삭제가 됨. 

 

호스트 볼륨

호스트의 디렉토리와 도커 컨테이너 디렉토리를 1:1 매칭 하여 연결하는 방법을 의미합니다. 

docker run -d \ 
--name nginx \
-v /opt/html:/usr/share/nginx/html \
nginx

 

볼륨 컨테이너

볼륨 컨테이너 방식은 데이터 저장용 컨테이너를 하나 구동을 하여 나머지 도커 컨테이너들과 볼륨연결을 해주는 방식을 말합니다. 

docker run \
  -d \
  -it \
  -v $(pwd)/html:/usr/share/nginx/html \
  --name web-volume \
  ubuntu:focal

docker run \
  -d \
  --name fastcampus-nginx \
  --volumes-from web-volume \
  -p 80:80 \
  nginx

docker run \
  -d \
  --name fastcampus-nginx2 \
  --volumes-from web-volume \
  -p 8080:80 \
  nginx

 

도커 볼륨

도커가 제공하는 볼륨 관리 기능을 활용하여 데이터를 보존 할 수 있습니다. 

/var/lib/docker/volumes/${volume-name}/_data 에 데이터를 저장합니다. 

 

docker volume create --name db

docker volume ls

docker run \
  -d \
  --name fastcampus-mysql \
  -e MYSQL_DATABASE=fastcampus \
  -e MYSQL_ROOT_PASSWORD=fastcampus \
  -v db:/var/lib/mysql \
  -p 3306:3306 \
  mysql:5.7

 

읽기전용 볼륨 연결

volume 마지막에 :ro 을 붙여 readOnly 속성을 부여 합니다. ro 옵션인 상태에서는 생성 및 삭제하는 등의 행동은 불가합니다. 

 

docker run \
  -d \
  -v $(pwd)/html:/usr/share/nginx/html:ro \
  -p 80:80 \
  --name ro-nginx \
  nginx

'Infra > Docker' 카테고리의 다른 글

Docker docker-compose  (0) 2023.09.26
Docker image 경량화  (0) 2023.09.26
Docker image 압축 및 풀기, Docker Hub 활용  (0) 2023.09.26
Docker Image build  (0) 2023.09.26
Docker Log  (0) 2023.09.25