繁体   English   中英

从主机访问在 docker 上运行的服务器

[英]Access server running on docker from host machine

我有一个在 docker 容器上运行的 rest api 服务器。 服务器运行在 docker 容器的 8000 端口,宿主机的 8081 端口绑定到容器的 8000 端口。 通过连接到容器并执行 curl localhost:8000,我可以看到其余的 api 服务器在容器内运行正常。 通过执行 docker inspect 我可以看到端口绑定符合预期。 但是,当我从主机 PC 浏览 localhost:8081 时,出现 ERR_CONNECTION_REFUSED 错误。 以下是我的一些 docker 设置和日志。 有想法该怎么解决这个吗?

# Docker compose File
version: "3"
services:  
  genie:
    network_mode: host
    build:
      context: app
      dockerfile: Dockerfile
    restart: unless-stopped
    ports:
      - "8081:8000"
    env_file:
      - ./.env
    volumes:
      - ./app:/home/genie/app
    entrypoint:
      - bin/server
# Docker inpsect result on the running container
"PortBindings": {
                "8000/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8081"
                    }
                ]
            },

容器内的应用程序需要配置为侦听所有接口,而不仅仅是 localhost。 Docker 网络是有命名空间的,因此只有容器内的进程才能访问 localhost,就像与您的笔记本电脑位于同一网络中的其他机器无法访问您笔记本电脑上仅侦听 localhost 的应用程序一样。

此更改是特定于应用程序的,我们在此问题中没有详细信息。 但是,如果它配置为 127.0.0.1,您可以将其更改为 0.0.0.0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM