не можу отримати доступ до http: // localhost: 4000 після того, як я скопіюй цей номер порту в докер


5

Це вперше я використовую докер. Я щойно виконував кроки на веб-сторінці докера: https://docs.docker.com/get-started/part2/#run-the-app Після завершення всіх кроків я не можу отримати доступ http://localhost:4000із браузера. (Ці кроки у посиланні буде відображати від 80 до 4000 в докер) Ось конфігурація мого докера:

$ 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: // localhost: 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)

Чи можливо, що помилка друку у вашій команді викликає це? Зображення докера "friendlyhello", але ви набрали "firendlyhello"
Майлз Кітінг

Якщо це пов’язано з помилкою помилки, командний рядок docker все ще відображає, що він працює. Якщо він працює, localhost: 4000 повинен працювати, правильно?
beasone

По-перше, ви можете отримати доступ до нього за адресою http://localhost:80? Що про http://0.0.0.0:80і http://0.0.0.0:4000?
Thebluefish

Я спробував localhost: 80 , 0.0.0.0:80 та 0.0.0.0.0000000 та 127.0.0.1:2000 , жоден з них не працює. (Веб-сайт суперпользователя завжди приховує "http: //", коли я
набираю

Відповіді:


2

Docker налаштовує власну IP-адресу за замовчуванням, яку ви можете бачити щоразу, коли ви запускаєте термінал Docker Quickstart.

Замість того http://localhost:4000,type http://[IP address:4000]

Ви також можете скористатися цією командою, щоб знайти IP, який налаштував Docker:

docker-machine ip default
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.