Bridge Network

2024. 11. 21. 12:04Docker

🏗 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