
도커 네트워크 구조와 통신 과정 분석 - Docker Network Deep Dive
안녕하세요! 이번 글에서는 도커 네트워크(Docker Network)의 개념과 구조를 실습과 함께 살펴보겠습니다.
도커 네트워크의 개념을 단순히 이론적으로 이해하는 것에서 그치지 않고, 명령어를 통해 직접 조회하고 분석하며 추적할 예정입니다. 이렇게 학습하면 문제 발생 시 진단과 해결이 훨씬 쉬워집니다.
도커 네트워크 기본 개념
도커 네트워크는 가상의 네트워크 장비(브릿지)를 통해 컨테이너들을 연결하는 방식으로 동작합니다.
1. 도커 네트워크 구조
-
docker0 (Bridge 네트워크 장비): 가상의 네트워크 장비로, 여러 컨테이너가 연결됨
-
veth (가상 네트워크 인터페이스): 컨테이너 내부의
eth0
과 호스트의veth
가 짝을 이루어 연결됨 -
컨테이너 내부 네트워크: 컨테이너는 프로세스지만, 독립된 네트워크 환경을 가짐
2. 컨테이너와 네트워크 연결 구조
-
컨테이너들은
docker0
브릿지를 통해 연결됨 -
각 컨테이너에는 **독립된 네트워크 인터페이스(
eth0
)**가 존재 -
호스트 시스템에서는
veth
인터페이스를 통해 컨테이너와 연결됨
도커 네트워크 실습
1. 현재 네트워크 확인
docker network ls
-
도커에서 기본적으로 제공하는 네트워크 종류를 확인할 수 있음
2. 네트워크 상세 정보 조회
docker network inspect bridge
-
bridge
네트워크의 상세 정보 출력 -
컨테이너가 네트워크에 어떻게 연결되어 있는지 확인 가능
3. 컨테이너 실행 및 네트워크 연결 확인
docker run -dit --name container1 ubuntu:20.04
-
Ubuntu 20.04 컨테이너 실행
-
docker ps
를 실행하여 정상 실행 여부 확인
ip addr show docker0
-
docker0
브릿지 네트워크 인터페이스 확인
brctl show
-
brctl
명령어를 통해 브릿지 인터페이스와 연결된 가상 네트워크 인터페이스 확인 (Red Hat 계열에서는bridge-utils
설치 필요)
docker exec -it container1 ip addr show eth0
-
컨테이너 내부의 네트워크 설정 확인
-
eth0
인터페이스의 IP 주소 확인 가능
4. 컨테이너 간 통신 확인
docker run -dit --name container2 ubuntu:20.04
-
또 다른 컨테이너 실행 후 통신 테스트
docker exec -it container1 ping -c 3 container2
-
컨테이너 간 ping을 실행하여 네트워크 연결 여부 확인
컨테이너 네트워크 인터페이스 매핑
도커 네트워크는 veth 인터페이스를 통해 컨테이너와 호스트 네트워크를 연결합니다. 이를 확인하는 과정은 다음과 같습니다.
1. 컨테이너의 네트워크 인터페이스 조회
ip addr show
-
호스트에서 실행하면
veth
인터페이스 확인 가능
docker exec -it container1 ip addr show eth0
-
컨테이너 내부에서는
eth0
인터페이스가 보이며,veth
와 연결됨
2. 컨테이너 네임스페이스를 활용한 네트워크 상태 확인
lsns -t net
-
각 컨테이너의 네트워크 네임스페이스 확인 가능
nsenter --net=/proc/$(docker inspect --format '{{ .State.Pid }}' container1)/ns/net ip addr show
-
특정 컨테이너의 네트워크 네임스페이스에 접근하여 직접 확인
3. 컨테이너의 네트워크 라우팅 정보 확인
docker exec -it container1 route -n
-
컨테이너의 기본 게이트웨이 확인 (
docker0
브릿지와 연결됨)
정리 및 마무리
이번 실습을 통해 도커 네트워크의 구조를 확인하고, 컨테이너와 호스트 간의 네트워크 연결 방식을 직접 검증해 보았습니다.
✅ 도커 네트워크는 docker0(브릿지), veth(가상 인터페이스), eth0(컨테이너 내부 네트워크 인터페이스)의 구조로 이루어짐
✅ 명령어를 활용하여 네트워크 인터페이스 및 연결 상태를 직접 확인 가능
✅ 컨테이너 네임스페이스를 이용하여 네트워크 환경을 깊이 분석할 수 있음