Bridge Network
2024. 11. 21. 12:04ㆍDocker
🏗 Docker Bridge 네트워크 정리
Bridge 네트워크는 Docker에서 디폴트로 제공하는 가상 네트워크로, 동일한 호스트 내의 컨테이너들 간 통신을 가능하게 하는 네트워크 방식입니다. Docker 컨테이너가 격리된 환경에서 안전하게 통신할 수 있도록 구성되며, 디폴트로 docker0
라는 가상의 네트워크 브리지를 통해 동작합니다.
1️⃣ Bridge 네트워크 개요
특징 | 설명 |
---|---|
컨테이너 간 가상 네트워크 제공 | 호스트와 컨테이너 간 네트워크 브리지를 생성하여 통신 지원 |
컨테이너 간 통신 허용 | 동일한 Bridge 네트워크에 연결된 컨테이너는 서로 통신 가능 |
격리된 네트워크 환경 | 다른 네트워크의 컨테이너나 호스트와 격리됨 |
디폴트 네트워크 | 컨테이너 실행 시 별도 네트워크를 지정하지 않으면 bridge 네트워크가 자동 할당 |
IP 주소 자동 할당 | Bridge 네트워크가 자동으로 서브넷을 생성하여 컨테이너에 IP를 부여 |
포트 포워딩 필요 | 외부에서 컨테이너로 접근하려면 -p 옵션으로 포트 매핑 필요 |
2️⃣ Bridge 네트워크 동작 원리
🔹 1) Bridge 네트워크 생성
- Docker 데몬은 디폴트로
docker0
라는 가상 네트워크 브리지를 생성 - 브리지를 통해 컨테이너 간 네트워크 트래픽을 관리
🔹 2) 컨테이너 연결
- 컨테이너가
bridge
네트워크에 연결되면 Docker는 가상 네트워크 인터페이스(veth) 를 생성 - 해당 인터페이스는
docker0
브리지와 연결되어 통신 가능
🔹 3) DNS 기반 통신
- Docker는 컨테이너별로 고유한 이름과 IP 주소를 할당
- 컨테이너 이름을 이용하여 DNS 기반 통신 가능 (
ping <컨테이너 이름>
)
🔹 4) IP 및 서브넷 관리
- 기본 Bridge 네트워크는
172.17.0.0/16
서브넷을 사용 - 컨테이너들은 이 서브넷 내에서 자동으로 IP 주소 할당
🔹 5) 포트 매핑 (외부 통신)
- 외부에서 컨테이너로 접근하려면 포트 매핑 필요
- 예:
docker run -p 8080:80
→ 호스트의 8080 포트를 컨테이너의 80 포트로 전달
3️⃣ Bridge 네트워크 관리 명령어
✅ 디폴트 Bridge 네트워크 확인
docker network ls
📌 출력 예시
NETWORK ID NAME DRIVER SCOPE
abcdef123456 bridge bridge local
✅ 사용자 정의 Bridge 네트워크 생성
docker network create my-bridge-network
✅ 특정 네트워크에서 컨테이너 실행
docker run --rm --network my-bridge-network alpine ping -c 3 google.com
✅ 기존 컨테이너를 특정 네트워크에 추가
docker network connect my-bridge-network <컨테이너 이름>
4️⃣ Bridge 네트워크 설정 확인
✅ 네트워크 상세 정보 확인
docker network inspect bridge
📌 출력 예시
[
{
"Name": "bridge",
"Driver": "bridge",
"IPAM": {
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Containers": {
"abcdef123456": {
"Name": "my-container",
"IPv4Address": "172.17.0.2/16",
"MacAddress": "02:42:ac:11:00:02"
}
}
}
]
✅ 호스트의 네트워크 인터페이스 확인
ip link show docker0
📌 출력 예시
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:0a:0c:00:01 brd ff:ff:ff:ff:ff:ff
5️⃣ Bridge 네트워크의 장점 & 한계
✅ Bridge 네트워크의 장점
1️⃣ 컨테이너 간 통신 가능 → 동일한 네트워크에 연결된 컨테이너 간 데이터 교환 가능
2️⃣ 네트워크 격리 제공 → 다른 네트워크와 분리되어 보안성 향상
3️⃣ 사용자 정의 네트워크 가능 → 서브넷, 게이트웨이, DNS 설정 가능
❌ Bridge 네트워크의 한계
1️⃣ 호스트 간 통신 불가 → 단일 호스트 내에서만 사용 가능
2️⃣ 수동 포트 매핑 필요 → 외부에서 접근하려면 -p
옵션 필요
3️⃣ 성능 오버헤드 → host
네트워크보다 성능이 약간 낮을 수 있음
6️⃣ Bridge 네트워크 vs. Host 네트워크 비교
특성 | Bridge 네트워크 | Host 네트워크 |
---|---|---|
격리 | 컨테이너 간 네트워크 격리 제공 | 격리 없음 (호스트 네트워크 공유) |
포트 매핑 | 필요 | 불필요 |
성능 | 약간의 오버헤드 있음 | 성능 최적화 |
사용 사례 | 기본 컨테이너 네트워크 연결 | 네트워크 격리가 필요 없을 때 |
🎯 Summary
🔹 Bridge 네트워크 는 Docker 컨테이너 간 통신을 제공하는 기본 네트워크 드라이버
🔹 컨테이너는 자동으로 고유한 IP를 부여받아 동일 네트워크 내에서 통신 가능
🔹 외부에서 접근하려면 반드시 포트 매핑(-p 옵션) 필요
🔹 사용자 정의 Bridge 네트워크를 생성하면 더욱 유연한 네트워크 설정 가능
🔹 Bridge 네트워크는 단일 호스트 내에서 컨테이너를 연결할 때 가장 적합한 방식
🚀 Docker 네트워크를 활용하여 컨테이너 간 안정적인 통신을 설정할 수 있습니다! 🎯
'Docker' 카테고리의 다른 글
Docker Compose (0) | 2024.11.29 |
---|---|
shell vs exec (0) | 2024.11.25 |
Linux Name (0) | 2024.11.21 |
alpine docker image (0) | 2024.11.21 |
Remove Container & Docker Image (0) | 2024.11.20 |