tidak dapat mengakses http: // localhost: 4000 setelah saya memetakan nomor port ini ke buruh pelabuhan

5

Ini adalah pertama kalinya saya menggunakan buruh pelabuhan. Saya baru saja mengikuti langkah-langkah di webist docker: https://docs.docker.com/get-started/part2/#run-the-app Setelah saya menyelesaikan setiap langkah, saya tidak dapat mengakses http://localhost:4000dari browser. (Langkah-langkah ini di tautan akan memetakan 80 hingga 4000 di buruh pelabuhan) Berikut adalah konfigurasi untuk buruh pelabuhan saya:

$ 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

Ketika saya menjalankan aplikasi ini:

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)

Kemudian saya mencoba untuk membuka http: // localhost: 4000 di browser saya, tetapi hanya mengatakan: Situs ini tidak dapat dijangkau. Ini adalah konten 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)
Menjadi satu
sumber
Apakah mungkin kesalahan ketik pada perintah Anda menyebabkan ini? Gambar buruh pelabuhan adalah "friendlyhello" tetapi Anda mengetik "firendlyhello"
Myles Keating
Jika itu karena kesalahan ketik, baris perintah buruh pelabuhan masih menampilkan bahwa itu sedang berjalan. Jika sedang berjalan, localhost: 4000 seharusnya berfungsi, benar?
beasone
Pertama, dapatkah Anda mengaksesnya di http://localhost:80? Bagaimana dengan http://0.0.0.0:80dan http://0.0.0.0:4000?
Thebluefish
Saya mencoba localhost: 80 , 0.0.0.0:80 dan 0.0.0.0:4000 dan 127.0.0.1:4000 , tidak ada yang bekerja. (situs web pengguna super selalu menyembunyikan "http: //" ketika saya mengetiknya di komentar ......)
beasone

Jawaban:

2

Docker mengkonfigurasi alamat IP defaultnya sendiri, yang dapat Anda lihat setiap kali Anda meluncurkan Terminal Quickstart Docker.

Alih-alih http://localhost:4000,type http://[IP address:4000]

Anda juga dapat menggunakan perintah ini untuk menemukan IP yang telah dikonfigurasi Docker:

docker-machine ip default
Richard
sumber