네 개의 네트워크 (호스트 모드 컨테이너 모드 없음 모드 브리지 모드)의 고정 표시기 심층 분석

고정 표시기는 기본 가상화 기술 LXC + cgroup에 + AUFS (오버레이) 기술을 기반으로, 우리는 cgroup을가 레코드를 제한 할 수 있습니다 리눅스 커널, 사용 자원 격리 프로세스 그룹 (프로세스 그룹)의 물리적 메커니즘으로 알려져있다.
CPU 서브 시스템 ,, 메모리 서브 시스템, 입출력 서브 시스템, NET 서브 시스템 : 고정 표시기 엔진이 기본 지정됩니다 컨테이너와 할당 다양한 서브 시스템을 기반으로 시작할 때 고정 표시기 고정 표시기 가상화 제품은 컨테이너, 컨테이너입니다.
컨테이너를 시작, 양수인 네트워크 네임 스페이스 (서브 시스템) 네트워크 카드, 라우팅,의 iptables 규칙, 다른 컨테이너가 서로 분리되어 함께 네트워크 네임 스페이스 컨테이너를 포함하여, 독립적 인 네트워크 환경을 제공합니다.

: 당신은 부두 노동자 부두 노동자 실행하여 컨테이너를 만들 때, 네 개의 네트워크 도커의 기본 모드가있는 -net 도커 용기 네트워크 모드를 지정하는 옵션을 사용할 수
의 n 호스트 모드, 지정된 -net = 호스트 사용,
-net = 컨테이너를 사용하여 N-컨테이너 모드 : NAME_or_ID를 지정,
N-없음 모드, -net = 없음 지정;
N-브리지 모드, -net = 지정된 기본 설정을 다리.
2. 호스트 모드 분석은
일반적으로 새로운 부두 노동자 컨테이너를 시작, 말하기 실행이 호스트 모드로 지정되어있는 경우, 별도의 네트워크 네임 스페이스 분리 서브 시스템을 할당, 부두 노동자 컨테이너는 별도의 네트워크 네임 스페이스받을 수 있지만하지 않습니다 네트워크 네임 스페이스는 호스트 서브 시스템을 공유 할 수 있습니다.
도커 새로 생성 된 컨테이너는 IP와 포트, 다른 소프트웨어, 또는 독립적 인 디렉토리와 같은 자신의 가상 네트워크 어댑터, IP, 게이트웨이, 라우팅 정보,하지만 호스트와 공유 정보가되지 않습니다, 자신의 카드를 만들지 않습니다 . 두 용기에 부가하여 동일한 네트워크 등의 파일 시스템으로서, 프로세스 목록 또는 서로 절연.
3. 컨테이너 패턴 분석
도커 컨테이너 네트워크, 컨테이너 모드가 지정 컨테이너 오히려 네임 스페이스를 공유하고 호스트 서브 시스템보다, 주에게 새로 만든 네트워크 네임 스페이스 서브 시스템을 기존의 컨테이너.
도커 새로 생성 된 컨테이너는 자신의 가상 네트워크 어댑터, IP, 게이트웨이, 라우팅 정보를되지 않습니다, 자신 만의 카드를 만들 수 있지만 같은 IP와 포트, 다른 소프트웨어 또는 다른 디렉토리로 도커 컨테이너 및 공유 정보를 지정하지 않습니다 독립. 두 용기에 부가하여 동일한 네트워크 등의 파일 시스템으로서, 프로세스 목록 또는 서로 절연. 도커 용기의 부착이 종료되면, 새로운 네트워크 도커 컨테이너 분실 될 것이다.
모드 4. 없음의 분석
도커 용기 없음 모드, 부두 노동자의 컨테이너가 자신의 네트워크 네임 스페이스 하위 시스템을해야하지만 도커 엔진은 도커 컨테이너의 새로운 시작을위한 모든 네트워크 정보를 구성하지 않는 경우 없음 모드와 다른 모드는 다릅니다.
자주 배관망 도구를 사용하여 새로 만든 자신의 가상 네트워크 어댑터, 수동으로 네트워크 카드 고정 표시기 컨테이너를 추가하는 IP, 게이트웨이, 라우팅 정보, 필요하지만, 구성 IP 라우팅 및 실제 비즈니스 환경에서 다른 정보 아닌 고정 표시기 컨테이너 IP 및 기타 특정 정보 도커 용기.
5. 다리 브리지 분석
브리지 모드 도커 도커 용기 또한, 각 컨테이너에 대한 네트워크 네임 스페이스 하위 시스템을 할당하는 기본 네트워크 모드이며, 자동으로 자신의 가상 네트워크 어댑터, IP, 게이트웨이, 각 컨테이너에 라우팅 정보를, 필요가 수동으로 추가 할 수 있습니다.
기본적으로 만들어 도커 용기 가상 네트워크 카드 veth 한 쌍의 통합되며, 동일한 호스트의 모든 컨테이너 사이 가능 네트워크 스위처 안에 모든 가입 가상 브리지 스위치 Docker0 모든 용기 네트워크 연결 , 상호 접근.
6. 브리지 모드 분석 원리의
기본 도커 엔진은 로컬 Docker0 가상 NIC를 생성하기 시작합니다. Docker0은 표준 리눅스 가상 브리지 장치입니다. 부두 노동자의 기본 모드 네트워크의 브리지에서 docker0 브리지는 중요한 역할을했다. 물리 계층은 표준 네트워크 브리지 장치, 두 개의 표준 물리적 네트워크 포트가 두 개의 물리적 네트워크를 연결할 수있는 다리입니다.
그러나, 물리 계층 장치와 비교하여 같은 허브, 브릿지 기능 분리 충돌 도메인을 포함하는 방법. 브리지 층은 홍수와 MAC 주소 방식을 학습함으로써 상대적으로 효율적인 통신을 얻을 수 있습니다. 기술의 발전과 함께, 표준 브리지 장치는 기본적으로 다리가 스위처입니다 교체, 제거되었습니다. 스위처는 또한 멀티 포트 브리지로 볼 수 있습니다.
: 도커 용기 브리지 모드를 사용하는 블록도에 도시되어있다
그림 삽입 설명 여기
: 도커 브리지 브리지 모드 생성
항상 쌍 veth 장비 올, 브리지 모드로 지정된 모드가 고정 표시기 엔진 가상 NIC 1) 도커 용기 veth 쌍 디바이스를 시작하기 위해 만들어 나타난다는 데이터 채널을 구성하는 장치로부터 입력 된 데이터는, 그것을 다른 기기의 가상 네트워크 케이블 veth 양단 인터페이스 두 네트워크 장치에 연결하는 데 사용 veth 장치로부터 나오는 것이다. 가상 케이블은 용기에 타단 docker0라는 다리에 일단이 삽입되어있다. veth 바인드 docker0 다리 각각의 인터페이스에 의해, 고정 표시기 가상 서브넷 호스트 모든 도커 용기 공유 서브넷을 생성한다.
2) 도커 veth 쌍의 기기가 새로 eth0를라는 만든 용기 장치에 배치되며, 동일한 호스트 머신에 추가 장치는,이 다리 docker0 가입 이름 및 네트워크 장치가 vethxxx 할 한다.
3) 도커 엔진은 새로운 컨테이너 사용 docker0 동적 IP 서브넷으로부터 할당하고 docker0 컨테이너의 디폴트 게이트웨이의 IP 주소를 설정한다.
용기는 또한 동안 4) 새롭게 생성 된 호스트와 함께 컨테이너가이 경우를 통신 할 수있다, 또한, 컨테이너 사이의 브리지 모드 통신에서, 용기의 IP 주소를 액세스 할 수있는 숙주는, 동일한 브리지 (스위치)에 상호 접속 될 수있다 고정 표시기 컨테이너에 액세스 할 수 없습니다 인터넷 (기반의 iptables는 SNAT), 그러나 다른 물리적 IP에 액세스 할 수 있습니다, 컨테이너 요구는 IP 호스트의 IP와 포트에 매핑 된 NAT 포트가 있습니다.

게시 52 개 원래 기사 · 원 찬양 4 ·은 10000 +를 볼

추천

출처blog.csdn.net/HCY_2315/article/details/103927400