无法使用 IP 地址访问本地 docker 容器

Unable to access local docker container with IP address

我是 运行 我的 Mac 系统上的本地 docker 容器。我已将 Dockerfile 内容粘贴在此 post 的底部。我在图像中公开了端口 8888,我想使用 container-ip-address:8888 从我的主机浏览器访问 python 程序。但是,它没有连接。将它映射到本地主机上的端口是可行的,但我不想那样做。我该如何解决这个问题? (已经尝试创建一个 docker 网络和 运行 容器作为新网络的一部分 - 没有骰子)。任何帮助将非常感激。 Dockerfile 内容 -

FROM python:latest

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY . /usr/src/app

EXPOSE 8888
RUN pip install tornado
CMD ["python", "./api.py" ]

Expose 只是告诉 docker 这个容器将使用这个端口。它不会将其映射到任何地方。 https://docs.docker.com/engine/reference/builder/#expose

映射是运行连接容器的代码任务。如果是本地机器,它是 docker。如果您不在 docker run 中映射端口,则无法从 docker 网络外部访问容器。同时您的主机不在 docker 网络中。如果您手动创建 docker 网络,情况也是如此 - 您的机器只是无法访问它的内部部分。

换句话说,你必须选择你的方式:

  • 当你做 docker 运行(本地开发)时使用 -p ....
  • 或在 docker compose 文件中定义它,如果你使用 docker composer(主要是本地开发)。当您在 docker.
  • 中 运行 连接多个通信系统时,此方法非常有用
  • 或者如果您使用解决方案进入 kubernetes(使用 orchestrator/autoscaler 等进行生产),则通过 kubernetes yaml 定义文件在生产环境中执行此操作