我正在这里浏览教程:https://docs.docker.com/get-started/part2/#build-the-app,现在已经到了我应该运行此命令的地步:
docker run -p 4000:80 friendlyhello
,没有任何反应。如果我转到http://localhost:4000/,我得到的只是“无法访问此站点”错误消息。
这是我尝试调试的一些命令的输出
docker --version
Docker version 18.06.1-ce, build e68fc7a
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
docker container ls --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
02424cf44e10 friendlyhello "python2" 2 minutes ago Exited (0) 2 minutes ago tender_beaver
da7b5b031aeb friendlyhello "python2" 10 minutes ago Exited (0) 10 minutes ago competent_mclean
02ea969400c5 friendlyhello "python2" 14 minutes ago Exited (0) 14 minutes ago focused_noether
caa8786614f1 hello-world "/hello" 26 minutes ago Exited (0) 26 minutes ago laughing_mendeleev
我正在装有macOS High Sierra版本10.13.6的Mac上运行此程序 如果您认为还有其他版本或环境信息可能对调试有用,请询问,我会提供。
答案 0 :(得分:0)
好吧,我已经解决了问题,但仍然不知道是什么原因造成的。
这就是我所做的。首先,由于我的计算机上还有其他各种废话,包括其他虚拟机和apache之类的东西,所以我决定重新启动计算机。重新启动后,它仍然无法正常工作,因此我开始弄乱了app.py文件最后一行列出的IP地址
这是供参考的app.py文件:
from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)
app = Flask(__name__)
@app.route("/")
def hello():
try:
visits = redis.incr("counter")
except RedisError:
visits = "<i>cannot connect to Redis, counter disabled</i>"
html = "<h3>Hello {name}!</h3>" \
"<b>Hostname:</b> {hostname}<br/>" \
"<b>Visits:</b> {visits}"
return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80)
我尝试了各种各样的方法,而不是0.0.0.0,包括
localhost
127.0.0.1
1.2.3.4
然后我想,嗯,也许我需要在/ etc / hosts文件中添加一个清单,所以我添加了这个:
192.168.33.33 test.docker
然后清除我的dns缓存并将app.py文件中的IP设置为:192.168.33.33仍然无法正常工作。
因此,在无奈之下,我将其重置为0.0.0.0并上次尝试了一次,由于某种原因,现在它可以工作了。不知道为什么,而且我想确切地知道我仍然做了哪些工作(如果有人有任何见识)