如何在Docker的容器上运行Python服务器
我想在Docker容器上运行Python HTTP服务器。如何在Docker的容器上运行Python服务器
我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
在泊坞图像的bash的我运行脚本:
python Service.py
哪个正确启动:
Wed Apr 5 13:09:51 2017 Server Starts - :9998
但是,当我在我的主机上输入地址:
http://localhost:9998
什么也没有发生。我已经尝试在我的DockerFile
的末尾放置EXPOSE 9998
,但这没有帮助。
如果我输入我的主机上docker-machine
地址:
http://192.168.99.100:9989/
它的工作原理。但我想在普通服务器上运行该映像,而不是在本地机器上运行 - 因此所有内容都应该暴露给本地主机。
我在Windows 7上试过了。
你知道如何运行吗?
我会很乐意为您提供帮助!
这可能是也可能不是相关的,但我不能添加评论,所以你得到一个独立的答复!
在Docker容器中,您可能必须将应用程序绑定到0.0.0.0
主机。 See this link.
在我看来(尽管我必须知道更多关于应用程序的信息),您正在寻找环回接口上的连接。这只会将侦听器暴露给本地机器。相比之下,0.0.0.0
用于将侦听器暴露给机器上的所有网络接口。特别是在这种情况下,泊坞窗网络适配器。对于更详细的解释,see this post.
你所描述的是一种正常的行为。 Docker镜像在虚拟环境中运行,因此无法共享环回地址。您需要做的是将您的服务器的流量重定向到您的泊坞窗图像。
This documentation page应该有你需要的所有答案。
祝你好运!
从https://docs.docker.com/engine/reference/run/#expose-incoming-ports
的-p选项暴露也可以采取一个IP地址。如果你想要绑定到127.0.0。1而是,它去那里。
尝试类似:-p 127.0.0.1:9998:9998
http://*.com/help/someone-answers –