【发布时间】:2022-01-22 12:07:25
【问题描述】:
我想用--network=host 运行docker 容器,但它忽略了端口和IP。我想在我的主机网络中运行 docker 容器,而我想将此容器限制为仅在 localhost 或 127.0.0.l 而不是 0.0.0.0 上侦听。
我该怎么办?
【问题讨论】:
标签: docker containers localhost
我想用--network=host 运行docker 容器,但它忽略了端口和IP。我想在我的主机网络中运行 docker 容器,而我想将此容器限制为仅在 localhost 或 127.0.0.l 而不是 0.0.0.0 上侦听。
我该怎么办?
【问题讨论】:
标签: docker containers localhost
不要使用--network=host;它通常会禁用 Docker 的网络层,几乎从不需要。
设置容器内的进程监听特殊的“所有接口”地址 0.0.0.0。如果不这样做,则根本无法从其自己的容器外部调用它。
当您发布容器的端口时,无论是使用 docker run -p 选项还是 Compose ports: 设置,都将主机 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
【讨论】: