Subnet

LAN은 동일한 네트워크 ID를 공유하는 장치들의 공간임(보통 공유기로 묶여있는 사설망을 생각하면 됨). 이때 서브넷은 LAN의 영역을 나눠서 크기와 공간을 정해주는 역할을 한다.

보통 255.255.255.0 같은 서브넷 마스크를 호스트의 IP 주소에 비트연산을 시키게 되면 같은 서브넷인지를 확인할 수 있다. 보통 서브넷을 표현할 때 IP주소/24 이런식으로 표현하는데 뒤에 붙은 24는 서브넷 마스크의 축약형으로 1을 앞으로부터 셌을 때의 갯수를 의미한다.

보통 서브넷 마스크와 호스트의 IP 주소를 같이 활용해서 네트워크 주소로 사용한다.

Docker 의 네트워크

Docker에서 127.0.0.1은 본인 컨테이너 즉 루프백 주소를 의미한다

보통 컨테이너는 별다른 설정이 없으면 같은 브릿지에 연결이 된다. 이 때 컨테이너의 IP주소나 컨테이너 이름으로 통신이 가능해진다.

프로젝트 삽질

Airflow S3 설정

Airflow에서 S3를 사용하려면 S3Hook을 사용한다. 컨테이너로 띄웠을 때 postgres DB를 airflow db로 인식하지 못하는 버그가 있다

Zeppelin jdbc

제플린은 기본적으로 jvm위에서 돌아가므로 jdbc로 데이터베이스와 통신이 가능함. jdbc driver(jar 파일)를 zeppelin 경로에 추가해줘야 jdbc 통신이 가능함

Docker compose ping

docker-compose exec 컨테이너A ping 컨테이너B 이렇게 통신이 되는지 테스트가 가능하다. 보통 docker-compose에 적힌 컨테이너는 default 브릿지로 같이 연결된다.

Docker Posgres entryPoint