728x90

일반 도커 컨테이너 네트워킹

이 구조는 Docker 컨테이너가 서로 독립적으로 실행되면서도 네트워크 통신이 가능하게 하여, 유연한 애플리케이션 배포와 스케일링을 지원함

네트워크 네임스페이스

  • 호스트 네트워크 네임스페이스
    • 호스트 네트워크 네임스페이스는 기본적으로 호스트 운영체제에서 사용하는 네트워크 스택을 의미
    • 모든 호스트의 네트워크 설정 및 트래픽은 이 네임스페이스를 통해 관리됨
    • 이 네임스페이스는 물리적 네트워크 인터페이스(eth0)와 가상 브리지 네트워크(docker0)를 포함
      • eth0 이란?
        • 호스트 머신이 외부 네트워크와 통신할 수 있게 해줌
        • 운영 체제는 여러 개의 NIC를 가질 수 있으며, 이를 구분하기 위해 각각의 인터페이스에 eth0, eth1 등의 이름을 부여함
        • eth0는 물리적인 첫 번째 네트워크 인터페이스 카드(NIC)와 연결되어 있음
        • 이 NIC는 네트워크 케이블을 통해 다른 네트워크 장치(예: 스위치, 라우터)와 물리적으로 연결됨
        • 운영 체제는 eth0를 통해 네트워크 설정을 관리하고, 네트워크를 통한 데이터 송수신을 제어함 (eth1도 마찬가지)
        • 네트워크 데이터를 주고받을 때, 운영 체제는 eth0 인터페이스를 통해 데이터를 NIC로 전달함
        • NIC는 데이터를 전기 신호로 변환하여 네트워크 케이블을 통해 전송하고, 반대로 수신된 전기 신호를 데이터로 변환하여 운영 체제에 전달함
      • docker0 이란?이는 호스트 네임스페이스에 존재하며, 여러 컨테이너를 연결하는 가상 네트워크 스위치 역할을 함또한 eth0 (Host NIC)와 연결되어 있어 컨테이너가 외부 네트워크와도 통신할 수 있게 해줌
      • 컨테이너는 이 브리지 네트워크를 통해 서로 통신할 수 있음
      • 도커는 기본적으로 docker0라는 브리지 네트워크를 생성함
  • 컨테이너 네트워크 네임스페이스
    • 컨테이너 네트워크 네임스페이스는 각 컨테이너가 독립된 네트워크 스택을 가지도록 하는 네임스페이스
    • 각 컨테이너는 자체 네트워크 인터페이스(eth0), 독립된 라우팅 테이블, 포트 등의 네트워크 리소스를 가짐

네트워크 연결 과정

  • 컨테이너 생성 시 네트워크 네임스페이스 할당
    • 도커는 새로운 컨테이너를 생성할 때, 컨테이너가 독립된 네트워크 환경을 가질 수 있도록 해당 컨테이너를 위한 별도의 네트워크 네임스페이스를 생성함
  • 가상 이더넷 페어 (veth pair) 생성
    • 도커는 호스트 네임스페이스와 컨테이너 네임스페이스를 연결하는 가상 이더넷 페어(veth pair)를 생성함
    • 이 페어는 두 개의 인터페이스로 구성되며, 하나는 호스트 네임스페이스에, 다른 하나는 컨테이너 네임스페이스에 위치함
    • 이 쌍은 서로 연결되어 있어, 컨테이너가 브리지 네트워크와 통신할 수 있게 함
  • 브리지 네트워크에 연결
    • 호스트 네임스페이스에 위치한 veth 인터페이스는 docker0 브리지 네트워크에 연결됨
    • 컨테이너 네임스페이스에 위치한 veth 인터페이스는 컨테이너 내부에서 eth0으로 나타남
  • IP 주소 할당
    • 도커는 각 컨테이너의 eth0 인터페이스에 IP 주소를 할당함. 이 IP 주소는 docker0 브리지 네트워크의 서브넷 내에서 유효함
728x90

+ Recent posts