无法到达以主机模式运行的容器端口

问题描述 投票:0回答:1

我一直在尝试在树莓派上的容器中运行 homebridge,这里是 docker-compose.yaml 定义:

services:
  homebridge:
    image: homebridge/homebridge:latest
    container_name: homebridge
    restart: always
    network_mode: host
    environment:
      - PGID=1099
      - PUID=1099
      - HOMEBRIDGE_CONFIG_UI=1
      - HOMEBRIDGE_CONFIG_UI_PORT=8581
    volumes:
      - /raid/config/homebridge:/homebridge

应用程序成功启动,我可以在日志中看到 HTTP 服务器已启动并正在运行:

[10/3/2024, 10:30:14 PM] [Homebridge UI] Homebridge UI v4.59.0 is listening on :: port 8581

现在,如果我卷曲端口,我会收到连接被拒绝的消息:

$ curl localhost:8581
curl: (7) Failed to connect to localhost port 8581: Connection refused

对我来说没有意义的是,如果我执行到容器中并执行完全相同的操作,则调用将通过:

$ docker exec -it 3783843255f7 /bin/bash
Note: This is a restricted shell, sudo cannot be used here.

Homebridge Terminal

Node.js Version: v20.17.0
Node.js Path: /opt/homebridge/bin/node
Plugin Path: /var/lib/homebridge/node_modules

Update Node.js: hb-service update-node

Install Plugin: hb-service add homebridge-plugin-name
Remove Plugin: hb-service remove homebridge-plugin-name

root@tardis:/homebridge $ curl localhost:8581
<!doctype html>
<html lang="en">
...

容器运行在主机网络模式下,为什么外部无法访问8581端口?

linux docker network-programming docker-compose homebridge
1个回答
0
投票

无根运行

这是一个不同的网络命名空间:

主机网络 (

docker run --net=host
) 也在 RootlessKit 内命名。

https://docs.docker.com/engine/security/rootless/#known-limitations

当 docker 在容器内(docker-in-docker、snap)、VM(docker 桌面或访问远程 docker 引擎)内无根运行时,docker 引擎的 localhost 与 docker 引擎的 localhost 不同用户执行 CLI。

© www.soinside.com 2019 - 2024. All rights reserved.