[Troubleshooting] 호스트는 정상인데 Docker 컨테이너에서만 네트워크가 안 될 때

서버 자체에서는 네트워크가 정상인데,
Docker 컨테이너 안에서만 ping, curl, 외부 통신이 전부 실패하는 경우가 있다.

이 경우 문제는 서버 네트워크가 아니라 Docker 네트워크 스택에 있다.


증상 정리 #

호스트에서는 정상 #

ping 8.8.8.8
curl https://google.com
  • 정상 응답
  • DNS / 라우팅 문제 없음

컨테이너에서는 실패 #

docker exec -it <container> ping 8.8.8.8
docker exec -it <container> curl https://google.com
  • Network is unreachable
  • Temporary failure in name resolution
  • 무응답

👉 호스트 OK / 컨테이너만 FAIL


원인 요약 (대부분 여기서 끝난다) #

이 상황의 대부분은 아래 중 하나다.

  • Docker bridge 네트워크 상태 꼬임
  • iptables / nftables 규칙 불일치
  • Docker DNS 설정 깨짐
  • 커널 네트워크 상태와 Docker 네트워크 상태 불일치

즉, Docker 네트워크 계층만 망가진 상태다.


가장 확실한 해결책 #

systemctl restart docker
  • Docker 네트워크 스택 초기화
  • bridge / iptables / DNS 전부 재정렬

👉 대부분 여기서 즉시 해결

하지만…


Docker 재시작이 불가능한 환경이라면 #

  • 프로덕션 트래픽 중
  • 수십 개 컨테이너 영향
  • 재시작 자체가 장애

이런 상황에서 쓸 수 있는 차선책만 정리한다.


대응 1: 문제가 있는 컨테이너만 네트워크 재연결 #

현재 네트워크 확인 #

docker inspect <container> | grep -i network

네트워크 재연결 #

docker network disconnect bridge <container>
docker network connect bridge <container>
  • 컨테이너는 유지
  • 네트워크 인터페이스만 재생성

👉 DNS / 라우팅 문제일 경우 효과 있음


대응 2: Docker DNS 문제 강제 우회 #

Docker 내부 DNS가 깨진 경우가 많다.

임시 테스트 #

docker exec -it <container> cat /etc/resolv.conf

nameserver가 이상하거나 응답 안 되면:

컨테이너 재기동 시 DNS 직접 지정 #

docker run --dns 8.8.8.8 --dns 1.1.1.1 ...

또는 docker-compose.yml:

dns:
  - 8.8.8.8
  - 1.1.1.1

👉 DNS만 깨진 경우 매우 효과적


대응 3: iptables / FORWARD 정책 확인 #

Docker는 커널 FORWARD 체인에 의존한다.

iptables -L FORWARD

아래 상태면 문제다:

Chain FORWARD (policy DROP)

임시 조치 #

iptables -P FORWARD ACCEPT

⚠️ 보안 정책 영향 있음
임시 확인용으로만 사용


대응 4: docker0 인터페이스 상태 확인 #

ip addr show docker0
ip route
  • docker0 DOWN
  • 라우팅 테이블에 docker 서브넷 없음

→ Docker 네트워크 자체 붕괴 상태
이 경우는 재시작 외엔 답 없음


언제 포기하고 재시작해야 하는가 #

아래 중 하나라도 해당되면 docker 재시작이 유일한 해법이다.

  • docker0 인터페이스 DOWN
  • 여러 컨테이너에서 동시에 네트워크 장애
  • iptables 규칙이 지속적으로 꼬임
  • 원인 불명 DNS 실패 반복

👉 이 상태에서 버티는 게 더 위험


핵심 요약 #

  • 호스트 네트워크가 정상이면 서버 문제는 아니다
  • 컨테이너만 통신이 안 되면 Docker 네트워크 문제
  • 가장 확실한 해결책은 docker 재시작
  • 재시작이 불가할 때만:
    1. 네트워크 재연결
    2. DNS 우회
    3. FORWARD 정책 점검

이 순서로 접근하면
불필요한 서버 재부팅이나 애플리케이션 디버깅을 피할 수 있다.

🛠 마지막 수정일: 2025.12.23

💡 도움이 필요하신가요?
Zabbix, Kubernetes, 그리고 다양한 오픈소스 인프라 환경에 대한 구축, 운영, 최적화, 장애 분석, 광고 및 협업 제안이 필요하다면 언제든 편하게 연락 주세요.

📧 Contact: jikimy75@gmail.com
💼 Service: 구축 대행 | 성능 튜닝 | 장애 분석 컨설팅

📖 E-BooK [PDF] 전자책 (Gumroad): Zabbix 엔터프라이즈 최적화 핸드북
블로그에서 다룬 Zabbix 관련 글들을 기반으로 실무 중심의 지침서로 재구성했습니다. 운영 환경에서 바로 적용할 수 있는 최적화·트러블슈팅 노하우까지 모두 포함되어 있습니다.


💡 Need Professional Support?
If you need deployment, optimization, or troubleshooting support for Zabbix, Kubernetes, or any other open-source infrastructure in your production environment, or if you are interested in sponsorships, ads, or technical collaboration, feel free to contact me anytime.

📧 Email: jikimy75@gmail.com
💼 Services: Deployment Support | Performance Tuning | Incident Analysis Consulting

📖 PDF eBook (Gumroad): Zabbix Enterprise Optimization Handbook
A single, production-ready PDF that compiles my in-depth Zabbix and Kubernetes monitoring guides.

What are your feelings

Updated on 2025-12-23