我想在docker容器上运行PythonHTTP服务器。在
我的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
我用以下方法建立形象:
^{pr2}$启动容器并输入命令:
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
什么也没发生。我也试过把EXPOSE 9998
放在DockerFile
的末尾,但没用。在
如果我在主机上输入docker-machine
地址:
http://192.168.99.100:9989/
它起作用了。但我希望在常规服务器上运行该映像,而不是在本地计算机上运行该映像,因此所有内容都应该公开给localhost。在
我在Windows7上试过了。在
你知道怎么运行这个吗?在
我将非常高兴你的帮助!在
你所描述的是正常行为。Docker映像运行在虚拟化环境中,因此无法共享环回地址。您需要做的是将流量从服务器重定向到docker映像。在
This documentation page应该有你需要的所有答案。在
祝你好运!在
来自https://docs.docker.com/engine/reference/run/#expose-incoming-ports
p expose选项也可以使用ip地址。如果您还想绑定到127.0.0.1,那么它就会绑定到127.0.0.1。在
请尝试如下操作:
-p 127.0.0.1:9998:9998
这可能是或可能不相关,但我不能添加评论,所以一个独立的答复你得到!在
在Docker容器中,您可能需要将应用程序绑定到
0.0.0.0
主机。See this link.在我看来(虽然我必须了解更多关于这个应用程序的信息才能确定),你正在寻找一个在环回接口上的连接。这将只向本地计算机公开侦听器。相反,
0.0.0.0
用于向机器上的所有网络接口公开侦听器。在本例中,指定为docker网络适配器。如需更详细的解释,see this post.相关问题 更多 >
编程相关推荐