在 Docker 中连接到 Tornado 应用程序
Connect to Tornado app in Docker
在Dockerfile中我使用:
EXPOSE 8888
所以,我运行容器:
docker run --name some-app --link some-redis:redis -d app
在输出中我有这个字符串:
c980349b5b2120064fc197b00a1aaf94aa16c788b66cb148da7826bb5488d0db
然后我想知道可以从浏览器连接的 ip:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' c980349b
5b2120064fc197b00a1aaf94aa16c788b66cb148da7826bb5488d0db
它returns 172.17.0.20
我转到网络浏览器和页面 http://172.17.0.20:8888
,但我在 Chrome
ERR_CONNECTION_TIMED_OUT
有什么问题以及如何解决?
谢谢!
更新
Dockerfile:
FROM python:3.4.3-slim
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY app.py /usr/src/app/
COPY requirements.txt /usr/src/app/
RUN pip install -r requirements.txt
CMD [ "python", "./app.py" ]
EXPOSE 8888
当我使用:
docker exec -it some-app bash
netstat -tulnp | grep 8888
它返回:
bash: netstat: command not found
和
docker logs some-app
Returns没什么
我会检查两次图像,因为容器似乎没有任何进程在端口 8888 上侦听。要调试该问题,您可以 运行 容器内的 shell 会话并检查如果进程正在侦听,请检查容器日志或其中的任何文件,如果有任何日志可以检查,... I.E.:
$ sudo docker logs some-app (check container log)
$ sudo docker exec -it some-app bash (run an interactive shell)
# netstat -tulnp | grep 8888 (check if any process is listening)
如果您没有发现问题,我会要求您 post 您的应用程序 Dockerfile 和
除此之外,如果您使用容器 ip 访问您的服务,则无需在 Dockerfile 中使用 EXPOSE 8888
。 EXPOSE
用于使这些端口能够发布到主机的随机端口,当容器是 运行 和 -P
选项时。
在Dockerfile中我使用:
EXPOSE 8888
所以,我运行容器:
docker run --name some-app --link some-redis:redis -d app
在输出中我有这个字符串:
c980349b5b2120064fc197b00a1aaf94aa16c788b66cb148da7826bb5488d0db
然后我想知道可以从浏览器连接的 ip:
docker inspect --format '{{ .NetworkSettings.IPAddress }}' c980349b
5b2120064fc197b00a1aaf94aa16c788b66cb148da7826bb5488d0db
它returns 172.17.0.20
我转到网络浏览器和页面 http://172.17.0.20:8888
,但我在 Chrome
ERR_CONNECTION_TIMED_OUT
有什么问题以及如何解决?
谢谢!
更新
Dockerfile:
FROM python:3.4.3-slim
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY app.py /usr/src/app/
COPY requirements.txt /usr/src/app/
RUN pip install -r requirements.txt
CMD [ "python", "./app.py" ]
EXPOSE 8888
当我使用:
docker exec -it some-app bash
netstat -tulnp | grep 8888
它返回:
bash: netstat: command not found
和
docker logs some-app
Returns没什么
我会检查两次图像,因为容器似乎没有任何进程在端口 8888 上侦听。要调试该问题,您可以 运行 容器内的 shell 会话并检查如果进程正在侦听,请检查容器日志或其中的任何文件,如果有任何日志可以检查,... I.E.:
$ sudo docker logs some-app (check container log)
$ sudo docker exec -it some-app bash (run an interactive shell)
# netstat -tulnp | grep 8888 (check if any process is listening)
如果您没有发现问题,我会要求您 post 您的应用程序 Dockerfile 和
除此之外,如果您使用容器 ip 访问您的服务,则无需在 Dockerfile 中使用 EXPOSE 8888
。 EXPOSE
用于使这些端口能够发布到主机的随机端口,当容器是 运行 和 -P
选项时。