连接 Docker 容器到本地站点。

3

我有两项服务 openhabmosquitto

openhabmosquitto 之间,我有一个内部网络,一切正常。

我在本地网络中有三台电脑 192.168.1.16192.168.1.17192.168.1.18,其中 192.168.1.16 运行着 Docker 和 mosquitto 容器。

现在,我需要为 mosquitto 容器添加新的 IP 地址 192.168.1.20,因为我需要从其他电脑将数据发送到 mosquitto

我该如何做?这是我的 docker-compose 文件:

version: '3.7'

services:
  openhab:
    image: "openhab/openhab:3.3.0"
    container_name: "openhab"
    restart: always
    networks:
      openhabnet:
        aliases:
          - openhab
    ports:
      - 8082:8080
      - 8444:8443
    volumes:
      - "/etc/localtime:/etc/localtime:ro"
      - "/etc/timezone:/etc/timezone:ro"
      - "./openhab_addons:/openhab/addons"
      - "./openhab_conf:/openhab/conf"
      - "./openhab_userdata:/openhab/userdata"
    environment:
      CRYPTO_POLICY: "unlimited"
      EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin"
      OPENHAB_HTTP_PORT: "8080"
      OPENHAB_HTTPS_PORT: "8443"
      USER_ID: "1000"
      GROUP_ID: "1000"

  mosquitto:
    image: "eclipse-mosquitto:latest"
    container_name: "mosquitto"
    user: "1000:1000"
    restart: always
    networks:
      openhabnet:
        aliases:
          - mosquitto
    ports:
      - 1884:1883
      - 9001:9001
    volumes:
      - "./mosquitto/config:/mosquitto/config"
      - "./mosquitto/log:/mosquitto/log"
      - "./mosquitto/data:/mosquitto/data"
    environment:
      - TZ=Europe/Bratislava

networks:
  openhabnet:
    driver: bridge

3
为什么需要为容器添加另一个IP地址?您的网络中的其他计算机应该能够访问位于192.168.1.16:1884192.168.1.16:9001上的mosquitto。 - Garuno
我删除了我的评论,因为它们是误导性的。Garuno是正确的,在compose文件中通过ports:暴露容器端口。Docker会为您设置NAT并将端口转发到底层后端。 - Daniel W.
1个回答

3

您的蚊子容器已经可以通过docker主机的IP地址192.168.1.16在主机网络上访问,并且您已经转发了以下端口:

  ports:
      - 1884:1883
      - 9001:9001

在 192.168.1.16:1884 上,您可以访问蚊子容器的 1883 端口,并且在其他计算机上也可以通过 192.168.1.16:9001 访问蚊子容器的 9001 端口,前提是您已经在计算机上允许了这些端口通过防火墙,包括 Docker 主机。

但是,如果您真的需要将蚊子容器本身的 IP 分配给主机网络,则需要使用 macvlan:https://docs.docker.com/network/macvlan/。通过此方式,容器将获得一个虚拟网卡,并连接到 Docker 主机所在的物理网络上。但我认为您不需要这样做,请进一步解释您的用例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接