Requisitos: Quero atribuir um endereço IP de LAN independente ao container Docker através do serviço DHCP do roteador, para que a aplicação Core desenvolvida ASP.NET possa ser implantada em múltiplos servidores (a aplicação precisa ser implantada em vários servidores para alcançar alta disponibilidade), e então eles possam ser transferidos entre si. Algumas aplicações, especialmente aquelas legadas ou que monitoram o tráfego de rede, esperam se conectar diretamente à rede física. Nesse caso, você pode usar o driver de rede macvlan para atribuir um endereço MAC à interface virtual de rede de cada container, fazendo com que pareça uma interface física que se conecta diretamente à rede física. Nesse caso, você precisa especificar uma interface física no seu host Docker para macvlan. E. sub-redes e gateways de Macvlan. Você pode até isolar sua rede com uma interface física diferente.
Primeiro, você precisa definir a placa física da máquina hostPermite o modo "promíscuo"Por exemplo, usando o ESXI como exemplo, configure um switch virtual da seguinte forma:
O ambiente do sistema é o seguinte:
CentOS Linux versão 7.9.2009 (Core) Docker versão 20.10.20, build 9fdeb9c
Instale o serviço Docker no host do CentOS 7. (omitido)
Prepararnet.ipv4.ip_forward = 1, você pode visualizar a configuração atual através do sysctl -a, se não for 1, por favor modifique para 1, o tutorial foi omitido. O principal objetivo é determinar se as informações recebidas por uma placa de rede podem ser passadas para outras placas de rede quando o host Linux possui múltiplas placas de rede, e se estiver configurado para 1, o encaminhamento de pacotes pode ser realizado.
Quando o serviço Docker for instalado, crie uma rede macvlan com o seguinte comando:
--ip-range: Decidido atribuir o subconjunto ao Docker 192.168.50.192/27, que é um intervalo de 32 endereços começando em 192.168.50.192 e terminando em 192.168.50.223. --gateway: Defina o endereço do gateway, geralmente o IP do roteador, por favor, defina de acordo com sua situação real -o pai: A interface pai, que é o nome da placa física de NIC do host, pode ser visualizada via IP A de acordo com a situação real.
Após a criação ser concluída, você pode visualizá-la com o seguinte comando:
Tente iniciar um container busybox e configurar uma rede com a recém-criada macvlan com o seguinte comando:
Dica: Se necessário, dê o recipientePara definir o endereço IP, use o parâmetro --ip, por exemplo: --ip=192.168.50.210
Você pode visualizar o endereço IP de um contêiner usando o seguinte comando:
Claro, você também pode entrar no contêiner para visualizá-lo, com o seguinte comando:
NósUsando outras máquinas na LAN, tente pingar o endereço IP do contêiner, você pode descobrir que pode pingar, como mostrado na figura abaixo:
Olhando a tabela de mapeamento IP e MAC do roteador, você pode ver que o endereço MAC/IP do contêiner docker é o mesmo do roteador, como mostrado na figura abaixo:
Tente iniciar novamente um contêiner Redis e configurar a nova rede MacVLAN com o seguinte comando:
O próprio host do CentOS também tem uma aplicação Redis rodando e está usando a porta 6379, e criamos uma aplicação contêiner Redis que também usa a porta 6379, ou seja.A mesma porta host, 6379, é ouvida por dois IPs diferentes, tente ver se funciona.
Os resultados dos testes estão todos funcionando normalmente, como mostrado na figura abaixo:
Recursos
O login do hiperlink está visível.
|