在本地主机而不是 172.17.0.1 上访问 Docker 容器

在本地主机而不是 172.17.0.1 上访问 Docker 容器

我在 ubuntu 上拉取并构建了一个 docker 容器,以在 Web 服务器上运行。该容器本质上是一个需要从同一服务器上的另一个应用程序调用的 API。

这是我的 DockerFile

FROM ubuntu:20.04


RUN apt update
RUN apt install -y python3-pip

# Install Dependencies
COPY requirements.txt .
RUN pip3 install  --no-cache-dir -r requirements.txt


COPY search_api.py .
COPY search/ search

ENV DEBUG 0


CMD [ "gunicorn", "--workers", "2", "--threads", "1", "-b", "0.0.0.0:5050", "--timeout", "400", "search_api:app"]

这是我的 yml 文件

version: '3.1'

services:
    engine:
        image: engine:0
        restart: always
        ports:
           - 5050:5050

当容器运行时,它声称位于 0.0.0.0 的端口 5050 上

 0.0.0.0:5050->5050/tcp

因为我试图从主机服务器外部访问 docker 容器,所以似乎无法将实际的 docker 容器映射到主机 5050 端口,而是转到 172.17.0.1:5050。我想知道是否有任何方法可以将 docker 容器一直推送到主机端口

奇怪的是,当我执行 netstat -tulpn 时,我得到了这个

tcp6       0      0 :::5050                 :::*                    LISTEN      2487/docker-proxy-c

因此,端口 5050 代理到 Docker,但如果我执行 localhost:5050,为什么它不会将我带到 docker 容器?根据我迄今为止测试的所有内容,如果我 curl localhost:5050,它会抛出 curl (56) 错误。当我从 docker0 curl 172.17.0.1 时,我得到了我想要的结果。有没有办法重新配置 docker 容器以使其指向 localhost?

编辑:卷曲错误

[root@host etc]# curl localhost:5050
curl: (56) Recv failure: Connection reset by peer
[root@host etc]# curl -4 localhost:5050
curl: (56) Recv failure: Connection reset by peer

相关内容