【发布时间】:2021-04-07 06:17:46
【问题描述】:
我在我的 Mac 系统上本地运行一个 docker 容器。我在这篇文章的底部粘贴了 Dockerfile 的内容。我在图像中暴露了端口 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" ]
【问题讨论】:
-
在 MacOS(和任何非 Linux 主机)上,您别无选择,只能使用
docker run -p发布的端口:您不能直接访问容器专用 IP 地址。docker run -p方法适用于所有主机操作系统(直到在 Docker Toolbox VM 中运行的 Docker),并且与在同一主机上运行的非 Docker 进程的工作方式相同。 -
谢谢。但这对我来说是一个主要问题,因为我试图调用 Python 程序公开的 Rest API。我从在 Tomcat 上本地运行的简单 HTML 页面调用 API。当我尝试从上述 HTML 页面调用 Rest API 时,通过 localhost 连接到容器,浏览器(任何浏览器)由于交叉引用问题而不允许它:-(。那么我该如何测试呢?有什么想法吗?
标签: docker containers ip-address