[Docker] 브리지(Bridge) Network 설정

2024. 10. 8. 21:17·OS/Docker

⭐️ Table of Contents

  • Tech 1. 브리지(Bridge) Network
  • Tech 2. 브리지(Bridge) Network를 사용한 컨테이너 간 통신 설정

Tech 1. 브리지(Bridge) Network 

브리지 네트워크란 Docker에서 컨테이너들이 서로 통신할 수 있도록 해주는 네트워크 드라이버다. 브리지 네트워크를 통해 각 컨테이너가 독립된 IP 주소를 가지며, 네트워크를 격리하고  관리할 수 있게 해 준다. 브리지 네트워크 상의 컨테이너들은 외부 네트워크와 통신할 때 호스트의 IP주소를 사용해 데이터를 전송할 수 있다. 

 

 

브리지(Bridge) 네트워크

  • docker0이 아닌 사용자 정의 브리지를 새로 생성해 각 컨테이너에 연결하는 네트워크 구조
  • 물리적 스위치를 가상으로 구현한 OSI Layer 디바이스다.
  • MAC 주소를 기반으로 트랙픽을 전달한다. 
  • Bridge network 기본 대역
    • 172. {17-31}. 0.0 /16 (65536개)
    • 192.168. {0-240}. 0/20 (4096개)

 

 

 

Tech 2. 브리지(Bridge) Network를 사용한 컨테이너 간 통신 설정

Docker 컨테이너의 네트워크 설정을 확인해 볼 것이다. 이 과정에서 Bridge 네트워크를 사용하고 이를 통해 컨테이너 네트워크가 어떻게 동작하는지 이해해 볼 것이다. 

 

 

ubuntu@docker :~$ docker network ls

 

네트워크 리스트를 출력해 보았다. 기본적으로 네트워크에서는 Bridge, host, none 네트워크를 확인할 수 있었다. 

bridge는 컨테이너가 이 네트워크를 통해서 연결되어 통신할 수 있게 해주는 것 같다.  host는 컨테이너가 호스트의 네트워크와 동일한 네트워크 네임스페이스를 사용하고, none은 그냥 없는 상태인 것 같다. 

 

* Network namespace

네트워크 네임스페이스는 도커 네트워크를 통해 구성된 경우가 아니면 동일한 호스트의 두 컨테이너가 서로 통신하거나 호스트 자체와 통신할 수 없도록 보장해 주는 것 같다.  

 

 

ubuntu@docker : ~$ sudo apt install bridge-utils
ubuntu@docker : ~$ brctl show

도커 이미지를 만들지 않았을 때
도커 이미지를 만들었을 때

 

먼저 bridge-utils 패키지를 설치해줬다. 이 패키지를 설치하면 docker0과 같이 브리지 네트워크 상태을 확인할 수 있다. 다음로 brctl 명령어를 사용하여 브리지 네트워크의 상태를 확인했다. 먼저 브리지의 이름은 docker0이고 브리지의 고유ID는 8000이다.  도커 이미지를 만들지 않았을 때에는 인터페이스가 연결이 안되어 있었지만, 이미지를 만들고 보니 docker0은 2개의 가상 인터페이스가 연결되었다. 

 

 

ubuntu@docker : ~$ docker run -it -d --name=my-ubuntu ubuntu:14.04
ubuntu@docker : ~$ docker exec -it my-ubuntu ip addr

ubuntu14.04 이미지를 기반으로 my-ubuntu라는 이름의 컨테이너를 백그라운드(-d)에서 실행했다.

다음으로 ip addr 명령을 사용하여 my-ubuntu 컨테이너 내 네트워크 인터페이스의 상태를 확인했다. eth0 인터페이스의 mac 주소와 IP주소를 확인할 수 있었다. IP주소는 172.17.0.2 / MAC은 02:42:ac:11:00:02 이다. 

 

 

 

 

ubuntu#docker :~$ docker exec -it my-ubuntu route

 

컨테이너가 외부 네트워크와 어떻게 연결되어 있는지, 어떤 네트워크 인터페이스를 통해 트래픽이 나가는지를 확인해야하기 때문에 호스트 시스템에서 라우팅 테이블을 확인해보았다. 지금 게이트웨이를 보면 172.17.0.1 주소는 컨테이너에서 외부 네트워크로 트래픽을 보낼 때 이 IP 주소를 통해 나가는데, 이게 브리지 네트워크에서 사용되는 게이트웨이 주소가 될 것이다. 

 

ubuntu@docker:~$ route

>> 결과
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 ens160
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 ens160
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160

 

호스트 시스템의 라우팅 테이블을 보았다. docker0 인터페이스가 172.17.0.0 네트워크를 관리하고 있다. 또 디폴트 게이트웨이가 ens160이라는 네트워크 인터페이스가 모든 네트워크를 관리하는 것 같다. 

 

 

ubuntu@docker :~$ docker network inspect bridge

 

inspect 명령어이다. bridge 네트워크를 좀 더 자세히 확인해보았다. 서브넷는 172.17.0.0이다. 즉, Docker 컨테이너들이 이 서브넷 내에서 IP 주소를 할당받고 통신해주는 역할을 해주는 것 같다. 게이트웨이는 172.17.0.1 주소에서 브리지 네트워크에 연결된 컨테이너들이 외부 네트워크와 통신할 때 사용하는 경로를 제공해주고 있다. 컨테이너 주소는 172.17.0.2인데 브리지 네트워크에 연결된 특정 컨테이너의 IP 주소를 나타내어 주고 있고, 이 컨테이너를 통해 다른 컨테이너나 호스트와 통신할 수 있다. 

 

 

 

이 과정을 이해해려고 컨테이너 설정을 해보았다. :) 브리지 네트워크에 대해서 잘 이해한 것 같다. 브리지 네트워크에 대해서 좀 더 배우면 추가적으로 포스팅을 해보겠다. 

 

 

저작자표시 비영리 변경금지 (새창열림)

'OS > Docker' 카테고리의 다른 글

[Docker] - Nginx를 활용한 프록시 구성  (0) 2024.10.14
[Docker] - Container Proxy  (0) 2024.10.14
[Docker] Docker Network란  (1) 2024.10.07
[Docker] Container 관리를 위한 CLI 명령어  (4) 2024.09.30
[Docker] Image 삭제 & 전체 삭제  (0) 2024.09.23
'OS/Docker' 카테고리의 다른 글
  • [Docker] - Nginx를 활용한 프록시 구성
  • [Docker] - Container Proxy
  • [Docker] Docker Network란
  • [Docker] Container 관리를 위한 CLI 명령어
Kouji
Kouji
Journey to Becoming a Data & Server Engineer
  • Kouji
    Kouji's Data & Server Journey
    Kouji
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Programming
        • Python
        • SQL
      • Data & AI
        • Data Analysis
        • Ai
      • Cloud(AWS)
      • OS
        • Linux
        • Docker
        • Jenkins
        • Ubuntu
        • Window
        • Kubernates
        • Ansible
      • Network
        • NVIDIA
        • Network[이론]
        • Network[GNS3, Packet]
        • Network[On-Premise]
        • Network [L2, L3]
      • 트러블 슈팅
      • Life
        • My Career Stories
        • Personal
      • 개발 + OS 지식 함양
  • 블로그 메뉴

    • 홈
    • 관리 페이지
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    라우팅
    VMware
    도커
    네트워크엔지니어
    시스템엔지니어
    서버엔지니어
    스위치
    dns
    웹
    화이팅
    Linux
    인프라
    서버
    보안
    오블완
    네트워크관리사
    OS
    ubuntu
    네트워크엔지니어링
    CISCO
    클라우드엔지니어
    티스토리챌린지
    인프라엔지니어
    알고리즘
    리눅스
    IT
    L3
    AWS
    docker
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kouji
[Docker] 브리지(Bridge) Network 설정
상단으로

티스토리툴바