Os quatro modos de rede do Docker

Quatro modos de rede

Modo de rede Docker Configuração Descrição
modo host –Net = host O contêiner e o host compartilham o namespace da rede
modo de contêiner –Net = container: NAME_or_ID O container e outro container compartilham o namespace Network. O pod no kubernetes é que vários contêineres compartilham um namespace de rede
modo nenhum –Net = nenhum O contêiner tem um namespace de rede independente, mas não tem nenhuma configuração de rede para ele, como atribuição de par veth e conexão de ponte, configuração de IP, etc.
Modo Ponte –Net = ponte O modo mais comumente usado (o padrão é este modo)

Princípio de realização

  • O Docker usa pontes do Linux para virtualizar uma ponte de contêiner Docker (docker0) no host. Quando o Docker inicia um contêiner, ele atribui um endereço IP ao contêiner de acordo com o segmento de rede da ponte Docker, chamado Container-IP. Ao mesmo tempo, a ponte Docker é O gateway padrão de cada contêiner. Como os contêineres no mesmo host estão todos conectados à mesma ponte, os contêineres podem se comunicar diretamente por meio do Container-IP do contêiner.

  • A ponte Docker é virtualizada pelo host e não é um dispositivo de rede real. A rede externa não pode ser endereçada. Isso também significa que a rede externa não pode acessar o contêiner por meio do Container-IP direto. Se o contêiner quiser que o acesso externo seja acessível, você pode mapear a porta do contêiner para o host host (mapeamento de porta), ou seja, usar o parâmetro -p ou -P para habilitar a execução do docker ao criar o contêiner e usar o [IP do host] ao acessar o contêiner: [Container Port] Acesse o container.

Modo host

  • O contêiner não virtualizará sua própria placa de rede, configurará seu próprio IP, etc., mas usará o IP e a porta do host

  • Se o modo de host for usado ao iniciar o contêiner, o contêiner não obterá um namespace de rede independente, mas compartilhará um namespace de rede com o host. O contêiner não virtualizará sua própria placa de rede, configurará seu próprio IP etc., mas usará o IP e a porta do host. No entanto, outros aspectos do contêiner, como o sistema de arquivos e a lista de processos, ainda estão isolados do host.

  • O contêiner que usa o modo de host pode usar diretamente o endereço IP do host para se comunicar com o mundo externo, e a porta de serviço dentro do contêiner também pode usar a porta do host sem NAT. A maior vantagem do host é que o desempenho da rede é melhor, mas já está no host docker. A porta usada não pode mais ser usada e o isolamento da rede não é bom.

  • O modo Host é mostrado na figura abaixo:

Insira a descrição da imagem aqui

Modo container

  • O contêiner criado não criará sua própria placa de rede e configurará seu próprio IP, mas compartilhará o IP e o intervalo de portas com um contêiner especificado

  • Este modo especifica que o container recém-criado compartilha um namespace de rede com um container existente em vez de compartilhar com o host. O contêiner recém-criado não criará sua própria placa de rede e configurará seu próprio IP, mas compartilhará o IP, o intervalo de portas etc. com um contêiner especificado. Da mesma forma, além dos aspectos de rede dos dois contêineres, outras coisas, como o sistema de arquivos e a lista de processos, ainda estão isolados. Os processos dos dois contêineres podem se comunicar por meio do dispositivo de placa de rede lo.

  • Diagrama esquemático do modo Container:

Insira a descrição da imagem aqui

Modo nenhum

  • Este modo desativa a função de rede do contêiner

  • No modo nenhum, o contêiner Docker tem seu próprio Network Namespace, mas não executa nenhuma configuração de rede para o contêiner Docker. Em outras palavras, este contêiner Docker não tem placa de rede, IP, roteamento e outras informações. Precisamos adicionar placas de rede e configurar o IP para o contêiner Docker.

  • Nesse modo de rede, o contêiner possui apenas uma rede de loopback e nenhuma outra placa de rede. O modo nenhum pode ser especificado por --network = none quando o contêiner é criado. Não há como se conectar a este tipo de rede. Uma rede fechada pode garantir a segurança do contêiner.

  • Diagrama esquemático do modo Nenhum:

[Falha na transferência da imagem do link externo. O site de origem pode ter um mecanismo anti-hotlinking. Recomenda-se salvar a imagem e carregá-la diretamente (img-oS9xVqdF-1600782698268) (C: \ Users \ kevin \ AppData \ Roaming \ Typora \ typora-user-images \ image-20200922214356875.png)]

Modo Ponte

  • Este modo irá alocar e definir IP para cada contêiner, e conectar o contêiner a uma ponte virtual docker0, através da ponte docker0 e a associação entre a configuração da tabela nat do iptables e o host

  • Quando o processo Docker é iniciado, uma ponte virtual chamada docker0 será criada no host, e o contêiner Docker iniciado neste host será conectado a esta ponte virtual. A ponte virtual funciona como um switch físico, de forma que todos os contêineres no host sejam conectados a uma rede da Camada 2 por meio do switch.

  • Atribua um IP ao contêiner da sub-rede docker0 e defina o endereço IP de docker0 como o gateway padrão do contêiner. Crie um par de dispositivos de par de placa de rede virtual no host. O Docker coloca uma extremidade do dispositivo de par de veth no contêiner recém-criado e o nomeia eth0 (a placa de rede do contêiner), e a outra extremidade é colocada no host com um nome semelhante como vethxxx Nomeie-o e adicione este dispositivo de rede à ponte docker0. Ele pode ser visualizado por meio do comando brctl show.

  • O modo bridge é o modo de rede padrão do docker. Sem o parâmetro -net, é o modo bridge. Ao usar docker run -p, o docker cria regras DNAT no iptables para realizar a função de encaminhamento de porta. Você pode usar iptables -t nat -vnL para visualizar.

  • O modo bridge é mostrado na figura abaixo:

Insira a descrição da imagem aqui

Resumo: Os acima são todos viva-voz, o que realmente precisa ser configurado é uma rede personalizada

Acho que você gosta

Origin blog.csdn.net/m0_47219942/article/details/108742088
Recomendado
Clasificación