Docker Volume mount 마운트

Docker volume 마운트되지 않은 경우

$ docker run -d --name=nginx -p 8081:80 nginx

로컬에 없으면 허브에서 다운받아옴

(웹에서 확인)localhost:8081 

$ docker exec -it --user=root nginx sh

$ apt update

$ apt install nano

$ nano /usr/share/nginx/html/index.html

index.html 내용 수정

타이틀 수정 Welcome to Docker Volume!

$ 저장 후 exit

$ docker stop nginx

$ docker rm nginx

$ docker exec -it --user=root nginx sh

# cat /usr/share/nginx/html/index.html

변경되었는지 확인(원상복구되어있음)

 

Docker volume 마운트 된 경우

html 폴더 아래 두개 파일 만들어놓음

$ ls -tl html

index.html

test.html

$ vi html/index.html

<제목>Hello from Docker Volume!!</제목>

$ vi html/test.html

은 내용이 없고 추가하기

<제목>Testing ... </제목>

$pwd

<로컬파일경로확인>

$ docker run -p 8081:80 --name nginx -v /Users/cookie/Desktop/_sio/데이터_엔지니어링_데브코스/10주차. airflow/nginx

:/usr/share/nginx/html nginx

$ docker stop nginx

$ docker rm nginx

$ docker run -p 8081:80 --name nginx -v /Users/jobox/Downloads/grepp/kdt/nginx:/usr/share/nginx/html nginx

(detach를 안한 상태)

새로운 탭 열기

$ cd html

$ ls -tl

test.html

index.html

(웹에서 확인)localhost:8081

(웹에서 확인)localhost:8081/test.html

터미널로 돌아와서 

$ vi test.html

Testing ... By Ourjune

웹 화면 refresh해주면 수정사항 반영

(웹에서 확인)localhost:8081/test.html

$ docker stop nginx

$ docker rm nginx

$ docker run -p 8081:80 --name nginx -v /Users/jobox/Downloads/grepp/kdt/nginx:/usr/share/nginx/html nginx

브라우저 가보면 수정한 사항 그대로 적용(마지막 상황 유지)

 

 

 

Docker-compose.yaml 으로 작업

Docker-copose란?

다수의 컨테이너로 구성되어있는 경우 쉽게 관리하기 위한 환경설정 파일이자 유틸리티

 

airflow-setup 컨테이너 터미널에서 작업

$ vi docker-compose.yaml

# AIRFLOW_PROJ_DIR 환경변수 pwd volume 현재위치경로 세팅되어 있음?

# volumes: 에 경로 지정되어있음 → airflow 경로? 도커 경로?

# services: 하나의 파일로 다수의 도커 컨테이너 기술가능?

 

$ cd dags

$ ls -tl

$ cd ..

$ vi docker-compose.yaml

$ docker-compose pull

$ docker-compose up

$ docker ps

apache/airflow:2.5.1 컨테이너 실행 확인 

$ docker exec -it worker-1 ID 사용 sh

$ pwd

opt/airflow

$ ls -tl 맥킨토시(로컬)에 있는 폴더들이 매핑이 된 것

dags

logs

plugins

$ cd dags