설명
network_mode: "host"를 사용하면 컨테이너가 독립된 네트워크 공간을 쓰지 않고 호스트 네트워크를 그대로 사용하게 됩니다. 이를 지원하는 실행 환경에서의 동작이며, 실제 외부 접근 가능 여부는 서비스의 수신 주소와 방화벽·인증 설정에도 달려 있습니다.
이 설정은 포트 충돌, 노출 범위 증가, 네트워크 격리 약화로 이어질 수 있습니다. 특별한 이유가 없는 일반 애플리케이션 컨테이너라면 독립 네트워크를 유지하는 편이 안전합니다.
잠재적 영향
- 컨테이너와 호스트 사이의 네트워크 경계가 사실상 사라집니다.
- 포트 노출과 충돌 관리가 복잡해질 수 있습니다.
- 네트워크 기반 보안 통제가 약해져 공격 표면이 넓어질 수 있습니다.
해결 방법
network_mode: "host"를 제거하고 기본 브리지 네트워크나 전용 네트워크를 사용하세요.- 외부 노출이 필요하면 필요한 호스트 주소와 포트만 명시적으로 바인딩하세요. Compose 내부 통신만 필요하면 포트를 게시하지 않아도 됩니다.
- 호스트 네트워크가 꼭 필요한 예외 워크로드는 별도 구성으로 분리해 운영하세요.
예시
변경 전
yaml
services:
mongo:
image: mongo:latest
network_mode: "host"
변경 후
yaml
services:
mongo:
image: mongo:latest
ports:
- "27017:27017"
설명:
- 변경 전: 호스트 네트워크를 그대로 공유해 컨테이너 네트워크 격리와 포트 통제가 약해집니다.
- 변경 후: 독립 네트워크를 유지하면서 포트를 게시합니다.
27017:27017은 기본적으로 모든 호스트 인터페이스에 바인딩되므로 필요한 수신 주소와 방화벽 규칙을 설정하고 MongoDB 인증도 별도로 구성하세요.