Изисквания: Искам да присвоя независим LAN IP адрес на Docker контейнера чрез DHCP услугата на рутера, така че разработеното ASP.NET Core приложение да може да бъде разгърнато на няколко сървъра (приложението трябва да бъде разгърнато на няколко сървъра, за да се постигне висока наличност), и след това те да могат да се прехвърлят едно между друго. Някои приложения, особено старите приложения или тези, които следят мрежовия трафик, очакват да се свържат директно с физическата мрежа. В този случай можете да използвате драйвера на macvlan мрежата, за да зададете MAC адрес на виртуалния мрежов интерфейс на всеки контейнер, като го направите да изглежда като физически мрежов интерфейс, който се свързва директно с физическата мрежа. В този случай трябва да посочите физически интерфейс на вашия Docker хост за macvlan. И. подмрежи и шлюзове на Macvlan. Можеш дори да изолираш мрежата си с различен физически мрежов интерфейс.
Първо, трябва да зададеш физическия NIC на хост машинатаПозволява режим "промискуитетен режим"Например, използвайки ESXI като пример, настройте виртуален комутатор по следния начин:
Системната среда е следната:
CentOS Linux версия 7.9.2009 (Core) Docker версия 20.10.20, build 9fdeb9c
Инсталирайте Docker услугата на CentOS 7 хоста. (пропуснато)
Слагамnet.ipv4.ip_forward = 1, можете да видите текущата конфигурация чрез sysctl -a, ако не е 1, моля, променете я на 1, урокът е пропуснат. Основната цел е да се определи дали информацията, получена от една мрежова карта, може да се предаде към други мрежови карти, когато Linux хостът има няколко мрежови карти, и ако е настроена на 1, може да се извърши препращане на пакети.
Когато Docker услугата бъде инсталирана, създайте macvlan мрежа със следната команда:
--ip-range: Решено да се присвои подмножеството на Docker 192.168.50.192/27, което представлява диапазон от 32 адреса, започващи от 192.168.50.192 и завършващи на 192.168.50.223. --gateway: Задайте gateway адреса, обикновено IP адреса на рутера, моля, задайте го според вашата реална ситуация -o parent: Родителският интерфейс, който е името на физическата NIC карта на хоста, може да се гледа през IP A според реалната ситуация.
След като създаването приключи, можете да го видите със следната команда:
Опитайте да стартирате busybox контейнер и да настроите мрежа с новосъздадения macvlan със следната команда:
Съвет: Ако е необходимо, дайте контейнераЗа да зададете IP адреса, използвайте параметъра --ip, например: --ip=192.168.50.210
Можете да видите IP адреса на контейнер чрез следната команда:
Разбира се, можете също да влезете в контейнера, за да го видите със следната команда:
НиеИзползвайки други машини в LAN, опитайте да пингнете IP адреса на контейнера, можете да откриете, че можете да пингувате, както е показано на фигурата по-долу:
Гледайки таблицата за IP и MAC картографиране на рутера, можете да видите, че MAC/IP адресът на docker контейнера е същият като този на рутера, както е показано на фигурата по-долу:
Опитайте да стартирате Redis контейнер отново и да настроите новата MacVLAN мрежа със следната команда:
Самият CentOS хост също има работещо redis приложение и също използва порт 6379, а ние създаваме redis контейнер приложение, което също използва порт 6379, тоестСъщият хост порт 6379 се слуша от два различни IP адреса, опитай да видиш дали работи.
Резултатите от теста работят нормално, както е показано на фигурата по-долу:
Ресурси
Входът към хиперлинк е видим.
|