具有内部和主机网络的Docker容器

rryofs0p  于 2023-02-18  发布在  Docker
关注(0)|答案(1)|浏览(160)

我是相当新的Docker,所以我可能会使用术语不正确-所以没有使用正确的话谷歌...请原谅!
我有几个用于家庭自动化的Docker容器,它们都配置有一个Docker-compose. yml。在内部,它们都通过Docker通过yml文件创建的虚拟网络(172.xxx.xxx.xxx)进行通信。

networks:
    homeautomation-network:
        driver: bridge

现在我希望一个特定的容器连接到我的主机所在的网络(192.168.xxx.xxx/24)。

iobroker:
        restart: always
        image: buanet/iobroker:latest
        container_name: iobroker
        hostname: iobroker
        ports:
          - "8081:8081"
        networks:
          - homeautomation-network
        volumes:
          - ./iobroker:/opt/iobroker

我需要做什么更改,使这个容器可以同时到达虚拟网络和“真实的”网络?

z9smfwbn

z9smfwbn1#

虽然这个问题已经很老了,但我还是会尝试回答它,因为这个问题不时出现,而且这个主题还没有过时。
在ioBroker容器中添加一个MACVLAN,为其提供一个单独的IP地址和对网络的完全访问权限。
网络的定义应类似于:

networks:
  homeautomation-network:
    driver: bridge
  macvlan-network:
    driver: macvlan
    driver_opts:
      parent: eth0 #depends of your Docker host
    ipam:
      config:
        - subnet: 192.168.xxx.xxx/24
          gateway: 192.168.xxx.xxx
          ip_range: 192.168.xxx.xxx/xx

要将此网络添加到您的ioBroker Docker容器,它应如下所示:

iobroker:
  restart: always
  image: buanet/iobroker:latest
  container_name: iobroker
  hostname: iobroker
#  ports:
#    - "8081:8081" #no longer needed
  networks:
    homeautomation-network:
    macvlan-network:
      ipv4_address: 192.168.xxx.xxx #optional to specify an ip address
  volumes:
    - ./iobroker:/opt/iobroker

请务必阅读并理解Docker Docs上的MACVLAN。您还必须找到要连接MACVLAN的Docker主机的网络设备(父设备),并为其定义IP范围。
有关ioBroker(带或不带Docker)的进一步支持,请加入ioBroker Community
此致,
安德烈(布阿内特)

相关问题