我无法从容器外部访问 docker [重复]

Posted

技术标签:

【中文标题】我无法从容器外部访问 docker [重复]【英文标题】:I can't access docker from outside the container [duplicate] 【发布时间】:2018-07-13 11:38:14 【问题描述】:

我必须“dockerize”我正在编写的服务(一个小型​​ Flask 应用程序)。这是我写的:

FROM python:3

RUN apt-get update && apt-get install -y build-essential

WORKDIR /app

COPY requirements.txt /app
RUN pip install --no-cache-dir -r requirements.txt

COPY . /app

EXPOSE 5000

ENV FLASK_APP=app.py
ENV FLASK_DEBUG=1

CMD flask run

我可以构建镜像并运行容器

docker run -p 5000:5000 <container-name>

flask 告诉我它正在监听 127.0.0.1:5000。但我无法从我的主机访问应用程序。我也尝试使用localhost0.0.0.0 作为地址。但是,如果我exec 进入容器,我可以curl 地址接收我期望的响应。

有人知道这里发生了什么吗?

【问题讨论】:

你用什么命令来运行容器? 【参考方案1】:

EXPOSE 指令实际上并不发布端口。您还必须告诉 docker 将连接转发到该端口。运行时,您将执行docker run -p 80:5000 my_docker_image,然后端口 80 上的入站流量将转发到 docker 容器内的端口 5000。或者,如果您不想在端口 80 上侦听,您可以在 docker 映像中将端口 5000 转发到 5000。

【讨论】:

对不起,我忘了说我确实在做端口映射。更新了问题。

以上是关于我无法从容器外部访问 docker [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Namenode 无法从 Docker 容器外部访问

SpringBoot @RestController 无法从 docker 容器外部访问

无法从 Docker 容器连接到外部 SQL Server

docker 容器网络绑定端口部署

从docker主机外部与kafka docker容器交互[重复]

Kafka Docker - 无法从 docker 容器外部生产或消费