将此端口号映射到 docker 后无法访问 http://localhost:4000

将此端口号映射到 docker 后无法访问 http://localhost:4000

这是我第一次使用docker。我只是按照docker网站上的步骤操作: https://docs.docker.com/get-started/part2/#run-the-app 完成所有步骤后,我无法http://localhost:4000从浏览器访问。(链接中的这些步骤将在docker中将80映射到4000)这是我的docker的配置:

$ docker ps
CONTAINER ID        IMAGE               COMMAND
STATUS              PORTS                  NAMES
d204920463a9        firendlyhello       "python app.py"
Up 6 minutes        0.0.0.0:4000->80/tcp   pensive_bell

当我运行该应用程序时:

liyuan.liu@USEUG-98T5N32 MINGW64 ~/test
$ docker run -p 4000:80 firendlyhello
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)

然后我试图打开http://本地主机:4000在我的浏览器中,但它只是说:无法访问此站点。这是 app.py 内容:

liyuan.liu@USEUG-98T5N32 MINGW64 ~/test
$ cat app.py
from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0)

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)

答案1

Docker 配置了自己的默认 IP 地址,您在启动 Docker Quickstart Terminal 时可以看到该地址。

代替http://localhost:4000type http://[IP address:4000]

您还可以使用此命令来查找Docker已配置的IP:

docker-machine ip default

相关内容