10주차 목요일, 49일차 Today I Learned
Docker, K8s (4)
: Docker compose (+with airflow)
✏️ 학습 내용
1. Docker compose로 다수 컨테이너 실행하기
Docker compose란 다수의 컨테이너로 소프트웨어가 구성되는 경우 사용할 수 있는 툴이자 환경 설정 파일로, docker-compose.yml로 설정할 수 있다. 여기서 다양한 테스트 등도 수행 가능하고, 다양한 버전을 만드는 것도 일반적이다. 개별 컨테이너를 따로 관리하는 것보다 docker compose를 이용하는 것이 훨씬 더 생산성이 높다. 다만 배워야할 것도 많고 복잡해질 수는 있다. 사용하게 된다면 소프트웨어를 구성하는 모든 컨테이너에 적용된다.
docker-compose.yml 작성 :
- services
- volumes
- networks
network는 지정하지 않으면 같은 컴포즈 그룹 내에서는 모두 연결되며, 기본 이름이 default가 된다.
docker compose build # Local 환경 다운로드
docker compose pull # Docker hub에서 다운로드
docker compose images # 컨테이너에 의해 실행되고 있는 이미지들 확인
docker compose push # 허브로 이미지들 푸시
docker compose up # build -> create -> start 수행
docker compose down
docker compose stop
docker compose rm
2. Airflow의 docker-compose.yml
https://github.com/keeyong/airflow-setup/blob/main/docs/Airflow%20Docker%20Local%20Setup.md
x-airflow-common은 airflow-common이라는 별칭을 정의한다. 이는 여러 서비스에서 공유하는 공통 구성을 정의한다. 이를 보통 앵커 (anchor)라고 부르며 yml 파일 블록을 나중에 계승이란 형태로 재사용 가능하게 해준다. version, services, volume, networks를 제외한 최상위 레벨 키워드는 모두 앵커이다.
DAG를 구현하며 특정 파이썬 모듈을 설치해야 한다면 x-airflow-common에서 _PIP_ADDITIONAL_REQUIREMENTS의 값을 변경하고 docker compose up을 하면 된다.
💡 배운 점
- docker compose로 다수 컨테이너를 실행해보았다. (어제의 실습과의 다른 점을 배웠다.)
- Airflow의 docker-compose.yml 파일을 확인했다.
📝 남아있는 의문과 개선점
- docker compose 하위 내용에 대해 따로 공부해야 한다.
- airflow에서 사용하는 docker compose에 대해서 아직 이해가 되지 않는다.
☁️ 소감
어제의 내용에 이어서 이번에는 본격적으로 docker compose를 활용하여 다수의 컨테이너로 구성된 소프트웨어를 실행하는 방법에 대해서 배웠다. 따로 데모를 하지 않아서 이해가 완벽하징 않지만, 어제의 실습에 비해서 무척 단순해졌다는 것을 느꼈다. 파일 문서 하나만 수정하면 쉽게 할 수 있는 것이다. 다만 그 문서의 내용을 구성하는 것에 대해서는 별도의 공부가 필요하다. 하면 할수록 배워야 할 것들이 늘어나지만 여전히 재미있다.