Сначала я прошел учебник и запустил приложение фляги из учебника в контейнере. Это сработало.
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"]
Сейчас я пытаюсь запустить свое собственное колбу в докер-контейнере. Я строю образ:
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
Выключил виртуальную машину перед запуском. Затем включите и ничего не изменилось. Я откатился назад.