gpt4 book ai didi

docker-compose macvlan 无法访问互联网

转载 作者:行者123 更新时间:2023-12-02 18:43:37 49 4
gpt4 key购买 nike

我在虚拟机中运行 ubuntu 桌面(我的主机是 mac),在这个虚拟机中我正在试验 macvlan带有 docker-compose 的 docker 网络驱动程序。

这是我的docker-compose.yml文件:

version: '3.7'
services:
trader:
build: ./
image: giuliotrader
container_name: giuliotrader
networks:
trading:
ipv4_address: 172.16.86.33
depends_on:
- tws

tws:
build: ./ib-docker
image: ibconnect
container_name: ibconnect
ports:
- "4001:4001"
- "4003:4003"
- "5901:5901"
volumes:
- ./ib-docker/config.ini:/root/ibc/config.ini
- ./ib-docker/gatewaystart.sh:/opt/ibc/gatewaystart.sh
networks:
trading:
ipv4_address: 172.16.86.22

networks:
trading:
driver: macvlan
driver_opts:
parent: enp0s3.10
ipam:
config:
- subnet: 172.16.86.0/24
#gateway: 172.16.86.1

我在使用这两个容器访问互联网时遇到问题。

我可以通过 docker exec -it ibconnect /bin/bash访问机器,但是如果我 apt-get install iputils-ping,他们无法访问网络我得到:
   Temporary failure resolving 'archive.ubuntu.com'

如果我 nc -l 5047在一个容器上和 nc 172.16.86.22 5047另一方面,我得到 Connection refused .

如果我取消注释最后一行 ( gateway ) docker-compose 报告错误:
ERROR: The Compose file './docker-compose.yml' is invalid because:
networks.trading.ipam.config value Additional properties are not allowed ('gateway' was unexpected),

我不确定配置网关的配置中缺少什么。如何在此设置中正确配置网络?我找不到任何像样的文档。

谢谢,

最佳答案

我在 MacBook Pro 上遇到了同样的问题。原因可能是macvlan子接口(interface)被无线接口(interface)阻塞。当我将 LAN 电缆连接到计算机,并从 en0: WiFi 更改 VM 的网络适配器时至enX: USB 10/100/1000 LAN ,一切都开始按预期工作。
另一种解决方案是使用 ipvlan而不是 macvlan .
我的设置:

  • G : 172.16.1.1/16 - 网关(物理)
  • M : 172.16.1.20/16 - Macbook Pro, [en0: Wifi(物理), en7:LAN (物理)]
  • V : 172.16.1.180/16 - Virtualbox + Ubuntu Server 20.04 [enp0s3 (虚拟)]
  • C1 : 172.16.180.53/16 - home_macvlan 中的 Docker 容器
  • C2 : 172.16.180.80/16 - home_macvlan 中的 Docker 容器

  • 什么不起作用
    1-设置VM的网络适配器 en0:WiFiBridged Adapter , 创建 macvlanV 中使用 docker
    地位: M <-> V [好的] C1 <-> C2 [好的] V <-> C1 [挪威克朗](如预期) M <-> C1 [NOK](问题) C1 <-> G [NOK](问题)
    什么有效
    1- 使用 ipvlan而不是 macvlan
  • 设置VM的网卡en0:WiFiBridged Adapter
  • 创建 ipvlanV 中使用 docker

  • 我运行创建的命令 ipvlan :
    docker network create -d ipvlan \
    --subnet 172.16.0.0/16 \
    -o ipvlan_mode=l2 -o parent=enp0s3 home_ipvlan
    然后运行 ​​Docker 容器:
    docker run \
    --net=home_ipvlan \
    --ip=172.16.180.53 \
    --name=C1
    <image name>
    2- 使用 macvlan在非 802.11 接口(interface)上
  • 设置VM的网卡enX: USB 10/100/1000 LAN (或其他非 802.11 接口(interface))为 Bridged Adapter
  • 在高级部分选择PCnet-Fast III (Am79C973)作为适配器类型
  • 在高级部分将 promious 模式设置为“全部允许”

  • 创建命令 macvlan
    docker network create -d macvlan \
    --subnet 172.16.0.0/16 \
    --ip-range 172.16.180.0/24 \
    --gateway 172.16.1.1 \
    -o parent=enp0s3 home_macvlan
    运行容器的命令:
    docker run \
    --net=home_macvlan \
    --ip=172.16.180.53 \
    --name=C1
    <image name>
    相关答案: https://stackoverflow.com/a/56918457/860189
    更多信息: https://hicu.be/macvlan-vs-ipvlan

    关于docker-compose macvlan 无法访问互联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55475440/

    49 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com