Python 如何在Docker';s容器

Python 如何在Docker';s容器,python,bash,docker,simplehttpserver,Python,Bash,Docker,Simplehttpserver,我想在docker容器上运行Python HTTP服务器 我的DockerFile如下所示: FROM continuumio/anaconda3:latest RUN apt-get -y update RUN apt-get -y install linux-headers-amd64 build-essential libc-dev gcc RUN conda install --yes gcc RUN conda install --yes numpy RUN conda insta

我想在docker容器上运行Python HTTP服务器

我的
DockerFile
如下所示:

FROM continuumio/anaconda3:latest

RUN apt-get -y update
RUN apt-get -y install linux-headers-amd64 build-essential libc-dev gcc

RUN conda install --yes gcc
RUN conda install --yes numpy
RUN conda install --yes scipy
RUN conda install --yes gensim
RUN pip install annoy

RUN conda config --add channels conda-forge
RUN conda install --yes spacy

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

ADD my-app.tar /usr/src/app

WORKDIR /usr/src/app/source
我用以下方法构建图像:

docker build -t my-app-poc .
启动容器并输入命令:

docker run -i -t -p 9998:9998
在Docker映像的bash中,我运行以下脚本:

python Service.py
正确启动的:

Wed Apr  5 13:09:51 2017 Server Starts - :9998
但当我在主机上输入地址时:

http://localhost:9998
http://192.168.99.100:9989/
什么也没发生。我也尝试过在我的
DockerFile
的末尾添加
EXPOSE 9998
,但没有任何帮助

如果我在主机上输入
docker machine
地址:

http://localhost:9998
http://192.168.99.100:9989/
它起作用了。但我希望在常规服务器上运行该映像,而不是在本地计算机上运行—所以所有内容都应该向本地主机公开

我在Windows7上试过了

你知道怎么做吗


我将非常高兴你的帮助

这可能有关联,也可能没有关联,但我无法添加评论,因此您会得到一个独立的回复

在Docker容器中,您可能必须将应用程序绑定到
0.0.0
主机


在我看来(尽管我必须了解更多关于应用程序的信息才能确定),您正在寻找回环接口上的连接。这将仅向本地计算机公开侦听器。相反,
0.0.0.0
用于将侦听器公开给计算机上的所有网络接口。特别是在这种情况下,docker网络适配器。有关更详细的解释,请参见您描述的是正常行为。Docker映像在虚拟化环境中运行,因此无法共享环回地址。您需要做的是将流量从服务器重定向到docker映像

应该有你需要的所有答案

祝你好运

来自

-p expose选项也可以采用ip地址。如果您还想绑定到127.0.0.1,那么它就在那里

尝试类似这样的操作:
-p 127.0.0.1:9998:9998