首先,我通过教程并从容器中的教程启动了flask应用程序。它确实奏效了。
seraf$ docker run -d -P training/webapp python app.py
然后我找到了我的虚拟机的ip
seraf$ boot2docker ip
192.168.59.103
并可以访问示例应用程序http://192.168.59.103:49157
:
这是教程的图像Dockerfile:
FROM ubuntu:12.04
MAINTAINER Docker Education Team <education@docker.com>
RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y -q curl python-all python-pip wget
ADD ./webapp /opt/webapp/
WORKDIR /opt/webapp
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]
现在我正在尝试在docker容器中运行我自己的烧瓶应用程序。我正在建立一个图像:
FROM ubuntu:12.04
MAINTAINER Serafim Suhenky <email@example.com>
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y python-dev
RUN apt-get install -y python-pip
RUN pip install gunicorn
RUN pip install flask
#VOLUME /web
ADD ./casa-web /web
WORKDIR /web
EXPOSE 5000
ENTRYPOINT python casa-web.py
然后我正在制作一个容器:
docker run -d -P seraf1m/web-app
或者使用更简单的图像:
docker run -d -P seraf1m/web-app python casa-web.py
或这个:
docker run -d -p 5000:5000 seraf1m/web-app python casa-web.py
到目前为止一切顺利; 容器启动,端口暴露,我可以看到应用程序的日志。
但我无法通过显示我的http://192.168.59.103:49158
其他端口访问我的应用程序docker ps
。
同时我可以访问教程应用程序。
我的形象有什么问题?也许与虚拟机有关?
seraf$ docker -v
Docker version 1.5.0, build a8a31ef
我也试过这个修复; 不知道它是如何工作的:
#!/bin/bash
for i in {49000..49900}; do
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$i,tcp,,$i,,$i";
VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$i,udp,,$i,,$i";
done
在运行之前切换掉虚拟机。然后打开,没有任何改变。我把它翻了回来。