docker守护进程无法将接口添加到沙箱中意味着什么?

docker守护进程无法将接口添加到沙箱中意味着什么?

我正在运行几个 docker 容器,并决定重新组织它们(将配置拆分到收集依赖服务的文件夹中,而不是拥有一大堆)。一切都很顺利,直到我搬家家庭助理配置。

除了强制所有“外部”可见的容器(私有 Docker 网络之外)共用一个网络之外,我没有更改之前的配置中的任何内容。它可以与 20 多个其他容器配合使用。

  hass:
    devices:
      - /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0:/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
    image: homeassistant/home-assistant:2022.7
    network_mode: host
    restart: unless-stopped
    volumes:
      - /etc/docker/domotique/data/hass:/config
      - /etc/localtime:/etc/localtime:ro
    depends_on:
      - mqtt
    networks:
      - srv

(...)

networks:
  srv:
    external: true
    name: srv

启动此容器时出现错误:

root@srv /e/d/domotique# docker-compose up hass
[+] Running 1/0
 ⠿ Container domotique-mqtt-1  Running                                                                             0.0s
Attaching to domotique-hass-1
Error response from daemon: failed to add interface veth6eb29e9 to sandbox: error setting interface "veth6eb29e9" IP to 172.18.0.33/16: cannot program address 172.18.0.33/16 in sandbox interface because it conflicts with existing route {Ifindex: 7 Dst: 172.18.0.0/16 Src: 172.18.0.1 Gw: <nil> Flags: [] Table: 254}

当我注释掉时它就消失了network_mode: host。正在运行的容器就有 IP 172.18.0.33/16。删除现有的 Home Assistant 容器来强制进行娱乐并没有帮助。

在这种情况下,这条消息意味着什么?

答案1

问题是我network_mode: host同时使用并设置了要使用的网络(srv)。

删除该networks部分解决了问题。

相关内容