Docker Toolbox - Localhost tidak berfungsi

100

Jadi saya menggunakan Docker Toolbox karena saya tidak memiliki Hyper-V di komputer saya karena ini bukan Windows 10 pro. Semuanya tampak berfungsi dengan baik, tetapi ketika saya mencoba membuka browser saya, saya 0.0.0.0:80selalu ditampilkan kembali: Situs ini tidak dapat dijangkau

Tetapi ketika saya menjalankan perintah: docker container psSaya mendapatkan yang berikut: 0.0.0.0:80->80/tcpartinya alamat ini harus berfungsi. Saya mencari di seluruh masalah stackoverflow dan github. Sekarang saya terjebak.

Apakah saya melewatkan sesuatu?

Terima kasih, Mark

EDIT:

Menggunakan docker-machine ip defaultmengembalikan saya 192.168.99.100. Saya menjalankannya di port 80. Saya masih mendapatkan hasil yang sama kecuali bahwa alamatnya menjadi id kontainer:https://fd677edg12

Saya menjalankan bahwa perintah pada cmd untuk menemukan IPv4 saya: cmd /k ipconfig /all. Letakkan hasilnya dengan port dan mengembalikan hal yang sama:https://fd677edg12

Menandai
sumber
1
0.0.0.0 bukan alamat sebenarnya, itu berarti port tersebut terikat ke semua antarmuka host buruh pelabuhan (komputer windows Anda). Coba localhost: 80 atau alamat ip apa pun yang dimiliki komputer Anda: 80
fvu
@fvu Saya masih mendapatkan "situs ini tidak dapat dihubungi". Saya juga mencoba docker-machine default ip -> 192.168.99.100Jadi saya taruh ini di alamat: 192.168.99.100:80Saya masih mendapatkan hasil yang sama.
Markus
1
Jika Anda dialihkan - aplikasi Anda yang rusak. Dengan asumsi buruh pelabuhan berjalan di komputer yang sama, Anda harus dapat melakukan localhost: 80
user2105103

Jawaban:

179

Docker Toolbox tidak mendapatkan kemudahan sebanyak Docker untuk Windows, tetapi Anda benar dalam menggunakannya karena Anda menggunakan edisi Home.

Di Toolbox, tidak ada yang akan localhost, dan akan menjadi 192.168.99.100default, karena menjalankan VM Linux di VirtualBox.

Jadi jika Anda lari docker run -p 80:80 nginx

(perhatikan saya harus menerbitkan port untuk 192.168.99.100mendengarkan di port itu)

Maka pergi http://192.168.99.100harus bekerja.

Bret Fisher
sumber
Terima kasih atas tanggapannya. Saya mengikuti langkah Anda kecuali ditambahkan docker run -p 80:80 -d nginx. Saya pergi ke alamat tersebut dan itu mengarahkan saya ke https://dev/, sekali lagi dikatakan bahwa situs tersebut tidak dapat dijangkau. Saya juga ingin memverifikasi apakah saya memiliki hostsfile (meskipun saya tahu itu bukan localhost). Saya mengomentari semuanya di sana.
Tandai
Setelah beberapa kali mencoba, akhirnya saya berhasil. Sayangnya, saya tidak terlalu yakin apa masalahnya.
Tandai
1
Info bonus: Docker Toolbox (digunakan di Windows 7, 8, 8.1, dan 10 Home) sebenarnya hanyalah skrip startup yang dibungkus docker-machinecli. Anda dapat menggunakan docker-machine --helpuntuk melihat apa yang dapat Anda lakukan untuk mengelola VM VirtualBox (atau membuat lebih banyak).
Bret Fisher
64

Saya awalnya memiliki beberapa masalah dengan mengakses Aplikasi saya di localhost: 8080 saat menggunakan DockerToolBox dan OracleVM VirtualBox.

Di VirtualBox:

  1. Klik mesin yang sesuai (mungkin yang berlabel "default")
  2. Pengaturan
  3. Jaringan> Adaptor 1> Lanjutan> Penerusan Port
  4. Klik "+" untuk menambahkan Aturan baru
  5. Setel Host Port 8080& Guest Port 8080; pastikan untuk membiarkan IP Host dan IP Tamu kosong

Jalankan perintahnya:

docker run -p 8080:8080 ${image_id}
EJJ
sumber
Karena pengaturan CORS pada API jarak jauh, saya harus menjalankan sebagai localhost: 8080. Sangat bagus, sangat sederhana, terima kasih!
phazei
1
Luar biasa. Di mana-mana mengatakan itu tidak bisa dilakukan tapi ini dia.
superPhreshHackerKid
Juga, pastikan Anda tidak mengacaukan hal-hal lain yang sudah mendengarkan port ini atau entri localhost / 127.0.0.1 di file host Anda ( C:\Windows\System32\drivers\etc\hosts) - Saya harus memeriksa keduanya sebelum berfungsi untuk saya ;-)
msa
Bekerja seperti pesona!
Daggie Blanqx - Douglas Mwangi
43

Saya mengikuti tutorial buruh pelabuhan untuk windows di https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell dan terjebak di langkah # 6 saat menguji nginx di browser web . Sepertinya saya menghadapi masalah serupa karena saya juga menggunakan Windows Home dan tidak memiliki Hyper-V. Solusi saya cukup sederhana:

  1. periksa default IP buruh pelabuhan Anda

$ docker-mesin ip default

192.168.99.100

  1. Buka Oracle Virtual Machine untuk mengatur penerusan port. Pastikan setelan jaringan adalah NAT, dan tambahkan penerusan porta. IP Host: 127.0.0.1, IP Tamu: 192.168.99.100, port semua diatur ke 80 seperti ini

  2. Coba lagi ke browser Anda dan jalankan http: // localhost atau http://127.0.0.1 (bisa menambahkan port 80 juga). Ini harus berjalan.

Masalahnya adalah bahwa IP nginx dimaksudkan untuk dapat diakses di dalam Mesin Virtual buruh pelabuhan, sehingga kita memerlukan pengaturan port forwading untuk mengaksesnya langsung di browser mesin host

nitya wijayanti
sumber
2
Saya membutuhkan kasus ketika HOST:CONTAINERport berbeda, misalnya docker run --detach --publish 8081:80 --name webserver nginx. Menemukan bahwa dalam hal ini saya harus meneruskan HOSTport saja, yaitu dalam pengaturan VirtualBox Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, tidak 80seperti yang saya kira sebelumnya. Sepertinya di mesin Windows 7 saya dengan Docker Toolbox Docker meneruskan dari port kontainer 80ke 192.168.99:8081dan saya meneruskan dari 192.168.99:8081ke localhost:8081karena 192.168.99:8081tidak menampilkan apa pun di browser web.
1er
13

Anda dapat menggunakan localhostsebagai pengganti '192.168.99.100' dengan mengikuti petunjuk:

Langkah # 01:

docker-machine ip default

Anda akan melihat IP default

Langkah # 02:

docker-machine stop default

Langkah # 03:

  1. Buka VirtualBox Manager (dari program awal di pencarian windows VirtualBox Manager)
  2. Pilih gambar Docker Machine VirtualBox Anda (misalnya: default)
  3. Buka Pengaturan -> Jaringan -> Lanjutan -> Penerusan Port
  4. Tambahkan nama aplikasi Anda, port host yang diinginkan, dan port tamu Anda i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

Langkah # 04: Sekarang Anda siap untuk memulai Mesin Docker Anda dengan menjalankan yang berikut ini:

docker-machine start default

Kemudian mulai wadah Docker Anda dan Anda akan dapat mengaksesnya melalui localhost.

Lihat di sini untuk detailnya.

Bablu Ahmed
sumber
2

Untuk memetakan port yang diharapkan localhostalih-alih mengenai IP mesin buruh pelabuhan secara langsung, Anda dapat menggunakan VirtualBox CLI.

Jika VM mesin galangan (di sini disebut default) sedang berjalan, tambahkan dan hapus aturan seperti ini:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

Jika VM tidak berjalan, atau Anda ingin berhenti sebelum mengubahnya:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

Dimana format aturan penerusan port [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>.

Perhatikan bahwa di VirtualBox, Anda ingin memetakan ke port host peta Docker, bukan port container internal. Anda memetakan host -> VM, lalu Docker memetakan VM -> container.

Lihat dokumen VirtualBox .

James Irwin
sumber
1

Ini adalah cara mudah lain untuk menghindari pengetikan ip 192.168.99.100. Pergi ke C:\Windows\System32\drivers\etc\hostsdan tambahkan di akhir file:

192.168.99.100 docker.awesome atau nama apa pun yang Anda sukai.

Simpan file (Anda harus memiliki hak admin, jadi pastikan Anda mengklik kanan pada file tersebut dan menjalankan sebagai administrator agar dapat menyimpannya saat Anda mengeditnya).

Pergi ke nama domain pilihan Anda, docker.awesome: 8080 dalam kasus ini dan begitulah.

Rasso
sumber
0

Setelah banyak uji coba, saya bisa mendapatkan papan buletin ini.

  1. Perintah docker run yang saya gunakan - docker run -p 4680: 8080 --name bb bulletinboard: 1.0 Di sini, 4680 adalah nomor port localhost. 8080 adalah nomor port kontainer, port tempat kontainer akan mendengarkan. Nomor port ini disebutkan dalam perintah EXPOSE di Dockerfile.

  2. Lalu, masuk ke browser web dan ketik 192.168.99.100:4680

Di sini, 192.168.99.100 adalah alamat IP mesin buruh pelabuhan (gunakan perintah -> ip mesin buruh pelabuhan)

  1. Setelah ini, halaman browser Anda akan terbuka untuk -

masukkan deskripsi gambar di sini

Semoga ini bisa membantu kalian semua !!

Ajay
sumber