학습주제
학습내용
엔진엑스,
yml 데모
docker run -d --name=nginx -p 8081:80 nginx
로컬에서 찾을수 없다면서 허브에서 받아옴.
브라우저로 이동해서 엑세스해본다
이걸 고쳐보도록 한다.
이미 실행중이기에 exec, 인터렉티브이기에 -it,
nano로 편집해야하기에 루트 계정, 이름 주었으니 아디이 대신 nginx, 마지막으로 쉘스크립트 sh
docker exec -it --user=root nginx sh
접속.
apt update로 패키지 다 받아옴
apt install nano
nano /usr/share/nginx/html/index.html
welcome to docker volume
저장한다.
exit
해서 나옴
만일 도커를 멈추고
docker stop nginx
다시 삭제 하고
docker rm nginx
docker run -d --name=nginx -p 8081:80 nginx
이 도커를 다시 기동하면
docker exec -it --user=root nginx sh
파일 내용을 다시 확인해보면
원상복귀 된게 보임 persistant 하지 않음
특정 데이터들을 내가 계속 보존하려면 볼륨을 써야함.
ls -tl html로
두개의 파일을 생성
html 디렉토리 위치를 확인해서 매핑 해줄 예정
-v ~~~~/kdt/nginx:~~~~/nginx
를 추가해서 마운팅 시도
이미 컨테이너가 실행중임
docker stop nginx
docker rm nginx
다시 재실행본다.
-d를 안했기 때문에 서버가 계속 돌아가는 모습
호스트의 폴더에 들어가본다
호스트의 내용대로 브라우저 내용이 바뀐 것을 볼 수 있다
여기서 알 수 있는건 호스트의 파일이 있으면 그 파일이 우선시 됨. 컨테이너 내의 같은 파일 무시 index.html
터미널로 넘어가서
방금 실행했던
docker stop nginx
docker rm nginx
앞서 내용이 유지가 되는지 확인한다
브라우저로 다시 실행시켜보면
그대로 유지되는 것을 확인 할 수 있음.
마지막 상황이 계속 유지가 됨.
호스트 볼륨이었음.
yml 파일 예를 들어본다
docker-compose 다수의 컨테이너로 구성되어 있는 경우, 그 설정을 쉽게해주는 환경설정 파일. 에어플로우는 다수의 프로세스로 구성이 되어있음.
yml을 보면
현재 yml 디렉토리
가 세팅됨.
volumes는 airflow-common각 도커 컨테이너에 공통으로 적용되는 세팅. volumesrk dlTdma. dags가 호스트 볼륨으로 마운트 되는 것을 보임.
대그 파일들이 에어플로우에 자동으로 로딩이 됨.
수정, 변경사항이 에어플로우에 반영이 됨.
아래로 내리면
services:
postgres, redis, 웹서버, 스케줄러, 워커들이 각자 기술되어 있음
보면 여러 컨테이너들을 같이 정의를 할 수 있음.
매핑이 잘 되어있는지 확인해본다
cd dags
docker-compose.yml을 열어본다
누군가 만들어 놓은 상태
보통 이건 docker compose pull
을 해서 관계된 모든 정보들을 이 로컬시스템으로 받아온다.
docker compose up 으로 하나씩 컨테이너들을 실행시킴.
다 실행이 되었다는 전제 하해
하나로 sh로 접속해서 dags 내용을 비교해본다
에어플로우를 돌리는 상황임.
워커 노드를 잡아서
docker exec -it 컨테이너 sh
에어플로우 유저로 로그인
pwd 찍어보면 opt/airflow
dags, logs, plugins가 있는 것을 확인할 수 있음.
호스트 파일시스템이 이 폴더들을 마운트 함
내용을 바꾸면 항상 싱크가 되어 있음.