Docker Compor com um arquivo de composição l2bridge

1

Eu tenho um arquivo de composição do docker que se parece com o seguinte:

version: '3.2'
services:
  service-one:
    build: service-one
    container_name: service-one
    networks:
      - my-custom-network
    restart: unless-stopped
  service-two:
    depends_on:
      - service-one
    build: service-two
    container_name: service-two
    networks:
      - my-custom-network
    restart: unless-stopped
networks:
  my-custom-network:
    driver: l2bridge

Isso parece funcionar muito bem na minha máquina executando docker-compose-up , todos os contêineres são iniciados e eles estão em rede entre si e podem alcançar o host por meio de 0.0.0.0, se necessário (houve alguns serviços que não pudemos usar) t contêiner ainda, que o host é necessário para executar).

No entanto, na máquina de outro desenvolvedor, ele faz o download de tudo e executa docker-compose up ; cria a rede, as máquinas começam, mas ele não consegue alcançá-las. Se ele faz um docker network inspect my-custom-network , ele mostra que a rede foi criada e os endereços IP foram atribuídos, mas inserir esses endereços IP em um navegador não resulta em nada.

Nós tentamos criá-los manualmente, uma máquina por vez, e colocá-los na rede "nat" padrão, e as máquinas ficam acessíveis se forem colocadas lá.

Então, acho que minha pergunta é em duas partes:

  1. Posso reescrever meu arquivo de composição para usar a rede nat padrão e, ao mesmo tempo, obter o benefício do nome do serviço como o nome do host? (o serviço dois espera poder fazer referência ao link ); Eu sei que no Creators Update (não disponível para uso, estamos atrás de um sistema de atualização corporativa) Eu posso criar várias redes nat, mas como estamos na Edição de Aniversário, não podemos.

Ou ...

  1. Por que a l2bridge dele não está funcionando? O meu está funcionando muito bem, eu sei que diz na documentação oficial do l2bridge, que você precisa da Atualização dos Criadores, mas nenhum de nós está executando atualmente, e ainda funciona bem na minha máquina, e não na dele. Usamos a mesma rede, com os mesmos direitos de acesso, os mesmos proxies, a mesma sub-rede, os mesmos servidores dhcp, a mesma configuração de firewall corporativo, a mesma política de grupo, o mesmo conjunto de atualizações do Windows. Por que o meu trabalharia e não o dele?
por Brian Deragon 13.11.2017 / 20:20

1 resposta

1

De acordo com o artigo da Microsoft Rede de contêineres do Windows :

l2bridge - containers attached to a network created with the 'l2bridge' driver will be in the same IP subnet as the container host. The IP addresses must be assigned statically from the same prefix as the container host. All container endpoints on the host will have the same MAC address due to Layer-2 address translation (MAC re-write) operation on ingress and egress.

Requires Windows Server 2016 or Windows 10 Creators Update

Como você e seu colega estão no Windows 10 versão 1607 (atualização de aniversário), você está em uma situação que não é garantida pela documentação. A diferença porque isso está funcionando para você e não para ele pode ser algum software ou atualizações do Windows que estão instalados no seu computador mas não no seu, por exemplo, outro driver de rede.

Acho que você deve atualizar para o Windows 10 Creators Update (versão 1703) e também verifique se suas versões do Docker são as mesmas.

    
por 21.11.2017 / 14:13