我已经构建了我的小型 Python(flask) 应用程序。容器在这里 docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4146fd976547 identidock_identidock:latest "/cmd.sh" 5 minutes ago Up 5 minutes 9090/tcp, 9191/tcp agitated_leakey
如果我尝试
curl localhost:5000
curl: (7) Failed to connect to localhost port 5000: Connection refused
我已经检查了 sudo netstat -an | grep -E "5000" unix 3 [] STREAM CONNECTED 25000
它不在 5000 上列出。带有端口的 yaml 行
ports:
- "5000:5000"
如果我执行我的容器
docker exec -it agitated_leakey /bin/bash
uwsgi@4146fd976547:/app$ netstat -ln
bash: netstat: command not found
我的 Dockerfile
RUN pip install Flask==0.10.1 uWSGI==2.0.8
WORKDIR /app
COPY app /app
COPY cmd.sh /
EXPOSE 9090 9191
为什么会发生这种情况?
另一个问题可能与模式有关。在发布部分,我必须
mode
明确设置主机并且一切正常:docker service create --name registry --publish published=5000,target=5000,mode=host registry:2
从 docker ps 输出看来,您的端口尚未暴露。
运行映射端口的容器,如果您仍然面临同样的问题,则 ssh 到容器并使用以下命令。
似乎 netstat 未安装在容器中。你可以运行一个
yum install netstat
来安装和检查。本指南将帮助您进行验证。最后检查
docker ps
输出。