요구사항: 라우터의 DHCP 서비스를 통해 Docker 컨테이너에 독립적인 LAN IP 주소를 할당하고, 개발된 ASP.NET Core 애플리케이션을 여러 서버에 배포할 수 있도록 하고(고가용성을 위해 여러 서버에 배포해야 합니다), 이후 서로 전송할 수 있습니다. 일부 애플리케이션, 특히 레거시 애플리케이션이나 네트워크 트래픽을 모니터링하는 애플리케이션은 물리 네트워크에 직접 연결되기를 기대합니다. 이 경우 macvlan 네트워크 드라이버를 사용해 각 컨테이너의 가상 네트워크 인터페이스에 MAC 주소를 할당할 수 있는데, 이는 물리적 네트워크에 직접 연결된 물리적 네트워크 인터페이스처럼 보이게 할 수 있습니다. 이 경우에는 Macvlan용 Docker 호스트에 물리적 인터페이스를 지정해야 합니다. 그리고. 맥블란의 서브넷과 게이트웨이. 심지어 다른 물리적 네트워크 인터페이스로 네트워크를 격리할 수도 있습니다.
먼저, 호스트 머신의 물리적 NIC를 설정해야 합니다"프로미스큐어스 모드" 모드를 허용합니다예를 들어, ESXI를 예로 들어 가상 스위치를 다음과 같이 설정하자:
시스템 환경은 다음과 같습니다:
CentOS 리눅스 릴리스 7.9.2009 (코어) Docker 버전 20.10.20, 빌드 9fdeb9c
CentOS 7 호스트에 Docker 서비스를 설치하세요. (생략됨)
설립하다net.ipv4.ip_forward = 1sysctl -a를 통해 현재 구성을 볼 수 있습니다. 만약 1이 아니라면 1로 수정해 주세요. 튜토리얼은 생략되었습니다. 주요 목적은 리눅스 호스트에 여러 개의 네트워크 카드를 가질 때 한 네트워크 카드가 수신한 정보를 다른 네트워크 카드로 전달할 수 있는지 확인하는 것이며, 1로 설정하면 패킷 전달이 가능하다는 점입니다.
Docker 서비스가 설치되면 다음 명령어로 macvlan 네트워크를 생성합니다:
--ip-range: 이 서브셋을 Docker 192.168.50.192/27에 할당하기로 결정했는데, 이는 192.168.50.192에서 시작해 192.168.50.223까지 32개의 주소로 구성되어 있습니다. --gateway: 게이트웨이 주소를 설정하세요. 보통 라우터 IP 주소입니다. 실제 상황에 맞게 설정하세요 -o 부모: 호스트의 물리적 NIC 카드의 이름인 부모 인터페이스는 실제 상황에 따라 IP A를 통해 볼 수 있습니다.
생성이 완료된 후에는 다음 명령어로 확인할 수 있습니다:
Busybox 컨테이너를 시작하고 새로 생성된 Macvlan으로 네트워크를 다음 명령어로 설정해 보세요:
팁: 필요하다면 용기를 주세요IP 주소를 설정하려면 --ip 매개변수를 사용하세요, 예를 들어: --ip=192.168.50.210
다음 명령어를 사용하여 컨테이너의 IP 주소를 확인할 수 있습니다:
물론, 다음 명령어로 컨테이너 내부에 들어가 볼 수도 있습니다:
우리LAN에 있는 다른 기기들을 이용해 컨테이너의 IP 주소를 핑으로 보내보세요아래 그림에서 보듯이 핑을 할 수 있습니다:
라우터의 IP 및 MAC 매핑 테이블을 보면, 도커 컨테이너의 MAC/IP 주소가 아래 그림에서 보듯이 라우터의 MAC/IP 주소와 동일하다는 것을 알 수 있습니다:
Redis 컨테이너를 다시 시작하고 다음 명령어로 새로운 MacVLAN 네트워크를 설정해 보세요:
CentOS 호스트 자체에도 레디스 애플리케이션이 실행 중이며 포트 6379를 사용하고 있으며, 우리는 포트 6379를 사용하는 레디스 컨테이너 애플리케이션을 만듭니다.동일한 호스트 포트 6379가 두 개의 서로 다른 IP에서 청취됩니다작동하는지 확인해 보세요.
아래 그림에서 볼 수 있듯이 모든 검사 결과가 정상적으로 작동하고 있습니다:
리소스
하이퍼링크 로그인이 보입니다.
|