设置 docker 容器仅监听 localhost 而不是 0.0.0.0

moh*_*mad 4 containers localhost docker

我想运行docker容器,--network=host但它忽略端口和 IP。我想在我的主机网络中运行 docker 容器,同时我想限制该容器仅在 localhost 或 127.0.0.l 而不是 0.0.0.0 上侦听。

我应该怎么办?

Dav*_*aze 8

不要使用--network=host;它通常会禁用 Docker 的网络层,而且几乎没有必要。

将容器内的进程设置为侦听特殊的“所有接口”地址 0.0.0.0。如果不这样做,则根本无法从其自己的容器外部调用它。

当您发布容器的端口时,无论是使用选项docker run -p还是 Composeports:设置,都将主机 IP 地址作为可选参数。如果您将该地址设置为,127.0.0.1则除了非容器主机进程之外,将无法从任何地方访问已发布的端口。

docker run -d \
  -p 127.0.0.1:8000:8000    \  # tell Docker to only accept connections
                            \  # on the host localhost interface
  -e BIND_ADDR=0.0.0.0:8000 \  # tell the application to accept
                            \  # connections from "everywhere"
  my/image
Run Code Online (Sandbox Code Playgroud)