带有L2bridge撰写文件的Docker撰写

布莱恩·德拉贡(Brian Deragon)

我有一个docker compose文件,如下所示:

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

通过运行docker-compose-up,这在我的机器上似乎工作正常,所有容器都启动,并且它们彼此联网,并且在必要时可以通过0.0.0.0到达主机(有些服务我们还不能容器化,主机需要运行)。

但是,在另一位开发人员的计算机上,他下载了所有内容并运行docker-compose up它创建了网络,机器启动了,但是他无法到达它们。如果他执行了docker network inspect my-custom-network,则表明确实已创建网络,并且已经分配了IP地址,但是将这些IP地址输入到浏览器中不会产生任何结果。

我们尝试一次手动将它们构建在一台计算机上,然后将它们放置在默认的“ nat”网络中,并且如果将计算机放置在该网络中,则可以访问这些计算机。

因此,我想我的问题分为两部分:

  1. 我可以重新编写撰写文件以使用默认的nat网络,同时仍然获得服务名称作为主机名的好处吗?(服务二希望能够引用http:// service-one /);我知道在Creators Update(不可用,我们在公司更新系统的后面)中,我可以创建多个nat网络,但是由于我们使用的是周年纪念版,所以不能。

或者...

  1. 他的l2bridge为什么不起作用?我的机器工作正常,我知道它在l2bridge的官方文档中说,您需要Creators Update,但我们俩目前都没有在运行它,并且它仍然可以在我的机器上正常运行,而不能在他的机器上正常运行。我们使用相同的网络,具有相同的访问权限,相同的代理,相同的子网,相同的dhcp服务器,相同的公司防火墙配置,相同的组策略,相同的Windows更新集。为什么我的工作而不是他的工作?
哈里奇

根据Microsoft的文章Windows容器网络

l2bridge-连接到使用“ l2bridge”驱动程序创建的网络的容器将与容器主机位于同一IP子网中。必须从与容器主机相同的前缀静态分配IP地址。由于在入口和出口上的第2层地址转换(MAC重写)操作,主机上的所有容器端点都将具有相同的MAC地址。

需要Windows Server 2016或Windows 10 Creators Update

由于您和您的同事使用的是Windows 10版本1607(周年更新),因此您和您的同事都处于文档无法保证的情况下。之所以对您有用而不对他有用,可能与您的计算机上安装的某些软件或Windows更新而不是他安装的更新不同,例如,另一个网络驱动程序。

我认为您既应该更新到Windows 10 Creators Update(版本1703),又要验证您的Docker版本是否相同。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章