análise Docker aprofundada do modo de rede

I. Introdução

Quando Docker Docker correr para criar um baseado em recipiente, você pode usar a opção especificada modo de rede recipiente -net, rede de modo padrão Docker tem quatro seguintes:

  • Modo hospedeiro, -net = hospedeiro especificado;
  • Modo de recipiente, recipiente -net =: NAME_or_ID especificado;
  • modo nenhum, -net = nenhum especificado;
  • modo de ponte, -net = ponte é especificada, a configuração padrão;

Dois, modo de host (não recomendado)

contentores Docker será atribuído por padrão para executar um subsistema separado isolamento Namespace de rede, com base no modo de host, o recipiente não terá um Namespace de rede separado, mas o anfitrião e compartilhar um Namespace de rede, o recipiente não será a sua própria configuração da placa de rede virtual próprio IP, etc., mas o uso de IP ea porta do host.

Três, modo de Container (não recomendado)

O recipiente recém-criado não cria a sua própria placa de rede, configurar seu próprio IP, mas o contêiner especificado e um IP compartilhado, intervalo de portas. Os mesmos dois navios, além das mesmas redes, outros sistemas, tais como arquivo, listas de processo, ou isolado.

Quatro, modo bridge Bridge (recomendado)

1, Generalidades

modo de Docker Bridge é o modo de rede padrão, que atribui Namespace Rede para cada recipiente, desde que o IP, a configuração de roteamento, o padrão será contentores Docker conectado a um switch ponte virtual Docker0.

Anfitrião:
Aqui Insert Picture DescriçãoNota: Este docker0 tanto um cartão de ponte é um interruptor ponte virtual, nota que é virtual. Gateway ip recipiente endereço janela de encaixe é o ip.

recipiente janela de encaixe:
Aqui Insert Picture Descrição
Primeiro de tudo eu quero dizer um fenômeno, abrimos um recipiente janela de encaixe, ifconfig será mais uma coisa:
Nota: Aqui eu abriu dois recipiente janela de encaixe:
Aqui Insert Picture DescriçãoNota: nome chinês Veth é um dispositivo placa de rede virtual, é emparelhado após o início do recipiente, um hospedeiro, numa extremidade, chamado vethxxxx, um eth0 homem chamado no recipiente janela de encaixe (o nome é fixo)

2, do seguinte modo topologia ponte

Aqui Insert Picture Descrição

3, comando brctl para ver os detalhes do interruptor de ponte virtual
yum install bridge-utils -y
brctl show

Aqui Insert Picture Descrição

Cinco, o modo Nenhum (empresas recomendados)

Nenhum nome do modelo sugere é, nada a configuração de rede, no ip, sem cartão, sem nada, então você precisa usar a configuração de ferramenta pipwork.
Nota: comando janela de encaixe executado no modo de rede não há nenhuma, pode mapeamento de portas não -p, porque não há nenhum IP, a porta não pode ser mapeada, como uma solução não encontrado!
configuração de rede real pipwork

1, editar arquivo estivador-rede
vim /etc/sysconfig/docker-network
systemctl restart docker

Aqui Insert Picture Descrição

2, edite o ifcfg-ens33, perfis de redes ifcfg-br0
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33

DEVICE=ens33
BOOTPROTO=none
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br0"
vim ifcfg-br0

DEVICE="br0"
BOOTPROTO=none
ONBOOT=yes
TYPE="Bridge"
IPADDR=172.16.193.200
NETMASK=255.255.255.0
GATEWAY=172.16.193.2 #利用pipework工具指定容器网关时,需要使用这个ip

NOTA: O gateway recipiente ferramenta próxima tubagens especificado não pode usar o cartão de IP do switch ponte virtual

systemctl restart network #使配置生效
ifconfig

Aqui Insert Picture DescriçãoNota: A interface ens33 para colmatar ao adaptador br0 rede virtual!

3, baixar, instalar ferramenta pipwork
git clone https://github.com/jpetazzo/pipework
cp ./pipework/pipework /usr/local/bin/
4, Iniciar vaso modo Nenhum
docker run -itd -p 6022:22 --net=none docker.io/jdeathe/centos-ssh
ifconfig
5, utilizando as ferramentas fornecidas pipwork recipiente janela de encaixe rede
pipework    br0       0ae0e8cff698 172.16.193.100/24@172.16.193.2
#	虚拟网卡交换机的名称   容器ID		 指定容器的IP      指定容器的网关
#注意这里网关不能填172.16.193.200,至于为什么请看下文详解!
docker exec -it 0ae0e8cff698 /bin/bash
yum install net-tools -y
ifconfig
route -n
ping www.baidu.com #看看网络是否通了,通了就对了!

Aqui Insert Picture DescriçãoOlha, isso vai ser bem sucedido, se você colocar o gateway recipiente para o virtual IP do switch ponte adaptador de rede (172.16.193.200), então você pode executar ping o IP da rede interna, não a rede externa

6. Porque portal recipiente para o ip interruptor ponte virtual (br0) placa de rede (172.16.193.200) não funciona?

Por favor, ponte arquitetura modo combinado com o gráfico acima entender!

Suponha que configurar seu gateway 172.16.193.200, porque não temos o interruptor ponte virtual função de roteamento, a é exigido o encaminhamento gateway. Portanto, não pode rota! Se você preencher 172.16.193.2, 172.16.193.2 antes de chegar ao gateway é o endereço de broadcast LAN, o gateway pode ser encontrado, e o gateway função de roteamento. Por que previamente definido portal 172.16.193.200 pode fazer! Desde a fusão ip ip e os nossos switches virtuais de host da ponte. Quando você preencher ip anteriormente consolidada é o anfitrião, o anfitrião é o roteamento tabela é uma função de roteamento, você pode route -n.

Ele publicou 188 artigos originais · ganhou elogios 150 · vista 30000 +

Acho que você gosta

Origin blog.csdn.net/weixin_44571270/article/details/104444960
Recomendado
Clasificación