Compose에서의 네트워킹
Compose에서의 네트워킹 (Networking in Compose)
Compose는 기본적으로 네트워킹을 처리하지만, 필요할 때 세밀한 제어를 제공해요. 이 페이지는 기본 네트워크가 어떻게 동작하고 컨테이너가 이름으로 서로를 어떻게 찾는지 설명해요. 또한 커스텀 네트워크를 정의하는 시점과 방법, 별도 Compose 프로젝트 간 서비스 연결, 커스텀 호스트명 매핑, 연결 문제 디버깅도 다뤄요.
출처: 문서
본문
기본 네트워크와 서비스 발견 (Default network and service discovery)
기본적으로 Compose는 (네트워크 모드를 변경하려면 Change the network mode 참고) 프로젝트 전용 네트워크를 만들고 모든 서비스를 여기에 연결해요. 각 서비스는 내부 DNS 서버에 자기 이름을 등록하므로, 컨테이너는 서비스 이름으로 서로 직접 도달할 수 있어요. IP 주소나 수동 구성이 필요 없어요.
예를 들어 Compose 파일이 이렇게 생겼다면:
services:
web:
build: .
ports:
- "8000:8000"
db:
image: postgres:latest
ports:
- "8001:5432"
web 서비스는 db라는 이름으로 DB에 접근할 수 있어요(명시적 네트워크 정의 없이도). 컴포즈 파일에 명시적으로 네트워크를 정의하지 않아도 기본 네트워크가 만들어져요. 이 경우:
- (기본 네트워크가) 생성돼요.
- 모든 서비스가 그 네트워크에 연결돼요.
- (서비스 이름이 DNS에 등록돼요).
컨테이너가 로컬에서 실행 중이면 호스트에서 포트로 접근할 수 있어요. Docker는 컨테이너 IP 주소를 네트워크의 사용 가능한 IP에서 동적으로 할당해요.
커스텀 네트워크 (Custom networks)
복잡한 구성에서는 networks 속성으로 커스텀 네트워크를 정의하고 서비스가 어떤 네트워크에 연결될지 지정할 수 있어요. 별도 Compose 프로젝트 간에 서비스를 연결하려면 external: true 네트워크를 사용해요.