教程中的Docker FriendlyHello无法在Mac上运行

时间:2018-10-07 20:17:37

标签: python macos docker

我正在这里浏览教程: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上运行此程序 如果您认为还有其他版本或环境信息可能对调试有用,请询问,我会提供。

1 个答案:

答案 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并上次尝试了一次,由于某种原因,现在它可以工作了。不知道为什么,而且我想确切地知道我仍然做了哪些工作(如果有人有任何见识)