Rocky Linux 또는 RHEL 계열 서버에서 Docker Compose를 실행할 때 아래와 같은 오류 메시지가 나타난다면, iptables
설정과 관련된 커널 모듈 문제일 수 있습니다.
|
|
원인
Docker는 기본적으로 bridge
네트워크 드라이버를 사용할 때 iptables
의 DOCKER
체인을 활용해 네트워크 NAT 규칙을 설정합니다. 하지만 다음과 같은 조건 중 하나라도 충족되면 문제가 발생할 수 있습니다.
- 커널 모듈
br_netfilter
또는bridge
가 로딩되지 않음 iptables
와nftables
간 충돌- 컨테이너가 네트워크 생성 이전에 실행됨
- 시스템이
iptables-nft
백엔드를 사용하는 중
해결 방법
1. 커널 모듈 확인 및 로딩
|
|
로드 확인:
|
|
부팅 시 자동 로딩 설정:
|
|
2. iptables 백엔드를 legacy로 전환
Docker는 여전히 iptables-legacy
를 선호합니다. 시스템에서 iptables-nft
를 사용 중이라면 다음 명령으로 전환할 수 있습니다.
|
|
출력 예시:
|
|
동일한 방식으로 다음 항목도 설정합니다:
|
|
3. Docker 재시작
iptables 백엔드나 커널 모듈을 변경한 경우 Docker를 재시작해야 반영됩니다.
|
|
해결되지 않는 경우
firewalld
또는nftables
가 활성화되어 있다면, Docker와 충돌이 발생할 수 있습니다. 이 경우firewalld
를 비활성화하거나iptables
전용으로 설정을 조정해야 합니다.- KVM 기반 VM에서 네트워크가 브리지로 설정되어 있을 경우, 호스트 커널에서 관련 모듈 로딩이 제한되는 경우도 있으므로 확인이 필요합니다.
결론
Docker Compose 실행 중 발생하는 네트워크 오류는 대부분 iptables
또는 커널 네트워크 모듈 설정 문제로 인해 발생합니다. 위 단계를 순차적으로 적용하면 대부분의 문제를 해결할 수 있으며, 특히 RHEL/Rocky Linux 계열에서는 iptables-legacy
설정이 핵심입니다.