도커 컨테이너 다루기 - 볼륨

Junghun Park·2022년 7월 11일
0

Dev-Ops

목록 보기
3/9

도커 레이어 아키텍쳐

docker build -t app ./
명령어를 입력하면 dockerfile이라는 명세파일을 기반으로 빌드가 진행됨

  1. 운영체제 레이어
  2. apt 패키지 설치 레이어
  3. 파이썬 페키치 설치 레이어
  4. 소스코드 레이어
  5. 엔트리포인트 레이어

레이어 구조의 장점 : 추후에 레이어상의 변경이 있을 때 필요한 레이어만 변경이 가능하기 때문에 유지보수에 용이하다. 뿐만 아니라 여러 버전이 생성되더라도 용량을 줄일 수 있다.

이미지 레이어 vs 컨테이너 레이어
이미지 레이어는 읽기 전용
컨테이너 레이어는 읽기 쓰기 가능
컨테이너가 종료되면 컨테이너 레이어도 함께 삭제 (임지 저장소 개념)

컨테이너 상에서 볼륨을 영구적으로 사용하는 방법

호스트 볼륨

호스트의 디렉토리를 컨테이너의 특정 경로에 마운트한다.

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

pwd : 현재 디렉토리 경로
컨테이너 안에서 생성한 파일이 호스트의 디렉토리에도 동일하게 생성됨

볼륨 컨테이너

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/volumnes/${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

읽기 전용 볼륨 연결

볼륨 연결 설정에서 :ro 옵션을 통해 읽기 전용 마운트 옵션을 설정할 수 있다.

touch: cannot touch '/usr/share/nginx/html/test': Read-only file system
ro 옵션을 사용하면 파일을 생성하는 명령어가 작동하지 않는다.

0개의 댓글