Docker Toolbox - Localhost çalışmıyor


100

Bu yüzden Docker Toolbox kullanıyorum çünkü makinemde Windows 10 pro olmadığı için Hyper-V yok. Her şey yolunda görünüyor, ancak tarayıcımı kullanmaya 0.0.0.0:80çalıştığımda her zaman bana geri dönüyor: Bu siteye ulaşılamıyor

Ama komutu çalıştırdığımda: şunu docker container psalıyorum: 0.0.0.0:80->80/tcpbu adresin çalışması gerektiği anlamına geliyor. Stackoverflow ve github sorunlarını araştırdım. Şimdi sıkıştım.

Bir şey mi kaçırıyorum?

Teşekkürler Mark

DÜZENLE:

Kullanmak docker-machine ip defaultbeni döndürür 192.168.99.100. Bunu 80 numaralı bağlantı noktasında çalıştırıyorum. Adresin kapsayıcı kimliği olması dışında yine de aynı sonucu alıyorum:https://fd677edg12

Benim ipv4 bulmak için cmd o komutu çalıştırın: cmd /k ipconfig /all. Sonucu bağlantı noktasına koyun ve aynı şeyi döndürür:https://fd677edg12


1
0.0.0.0 gerçek bir adres değildir, bağlantı noktasının tüm ana bilgisayar (Windows bilgisayarınız) arabirimlerine bağlı olduğu anlamına gelir. Localhost'u deneyin: 80 veya bilgisayarınızın sahip olduğu ip adresi: 80
fvu

@fvu Hala "bu siteye ulaşılamıyor" mesajı alıyorum. Ben de denedim docker-machine default ip -> 192.168.99.100ve bunu adrese koydum: 192.168.99.100:80Hala aynı sonucu alıyorum.
Mark

1
Yeniden yönlendiriliyorsanız - bozuk olan uygulamanızdır.
Docker'ın

Yanıtlar:


179

Docker Toolbox, Windows için Docker kadar kolaylık sağlamaz, ancak Home sürümünde olduğunuz için onu kullanmakta haklısınız.

Toolbox'ta, VirtualBox'ta bir Linux VM çalıştırdığı için varsayılan olarak hiçbir şey olmayacak localhostve olmayacaktır 192.168.99.100.

Yani koşarsan docker run -p 80:80 nginx

( 192.168.99.100o bağlantı noktasında dinlemek için bir bağlantı noktası yayınlamam gerektiğine dikkat edin )

O zaman http://192.168.99.100işe yarayacak.


Cevabınız için teşekkürler. Eklenenler dışında adımlarınızı takip ediyorum docker run -p 80:80 -d nginx. Adrese gidiyorum ve beni yönlendiriyor https://dev/, yine siteye ulaşılamadığını söylüyor. Ayrıca bir şeyim olup olmadığını doğrulamak istedim hosts(bunun localhost olmadığını bilmeme rağmen). Orada her şeyi yorumladım.
Mark

Birkaç denemeden sonra sonunda onu çalıştırdım. Maalesef sorunun ne olduğundan pek emin değilim.
Mark

1
Bonus bilgi: Docker Toolbox (Windows 7, 8, 8.1 ve 10 Home'da kullanılır) gerçekten sadece docker-machinecli etrafına sarılmış bir başlangıç ​​betiğidir . docker-machine --helpVirtualBox VM'yi yönetmek (veya daha fazlasını oluşturmak) için neler yapabileceğinizi görmek için kullanabilirsiniz .
Bret Fisher

64

Başlangıçta Uygulamalarıma localhost: 8080'de DockerToolBox ve OracleVM VirtualBox kullanırken erişimle ilgili birkaç sorun yaşadım.

VirtualBox'ta:

  1. Uygun makineyi tıklayın (muhtemelen "varsayılan" olarak etiketlenmiş olanı)
  2. Ayarlar
  3. Ağ> Bağdaştırıcı 1> Gelişmiş> Bağlantı Noktası Yönlendirme
  4. Yeni bir Kural eklemek için "+" öğesini tıklayın
  5. Ana Bilgisayar Bağlantı Noktasını 8080ve Konuk Bağlantı Noktasını Ayarlama 8080; Ana Bilgisayar IP'sini ve Misafir IP'sini boş bıraktığınızdan emin olun

Komutu çalıştırın:

docker run -p 8080:8080 ${image_id}

Uzak API'de CORS kurulumu nedeniyle, localhost: 8080 olarak çalıştırmam gerekiyor. O kadar harika ki, çok basit, teşekkürler!
phazei

1
İnanılmaz. Her yerde yapılamaz diyor ama işte burada.
superPhreshHackerKid

Ayrıca, bu bağlantı noktasında halihazırda dinleyen diğer şeylerle veya ana bilgisayar dosyanızdaki localhost / 127.0.0.1 girişleriyle işleri karıştırmadığınızdan emin olun ( C:\Windows\System32\drivers\etc\hosts) - benim için çalışmadan önce her ikisini de kontrol
etmeliydim

Cazibe gibi çalıştı!
Daggie Blanqx - Douglas Mwangi

43

Https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell'de windows için docker'ı takip ediyordum ve web tarayıcısında nginx'i test ederken 6. adımda takılı kaldım . Windows Home'u da kullandığım ve Hyper-V'ye sahip olmadığım için benzer bir sorunla karşılaştım. Çözümüm oldukça basit:

  1. docker IP varsayılanınızı kontrol edin

$ docker-machine ip varsayılanı

192.168.99.100

  1. Bağlantı noktası yönlendirmeyi ayarlamak için Oracle Virtual Machine'e gidin. Ağ ayarının NAT olduğundan emin olun ve bağlantı noktası yönlendirme ekleyin. Sunucu IP: 127.0.0.1, Ziyaretçi IP: 192.168.99.100, 80 liman şey hazır böyle

  2. Tarayıcınızı yeniden deneyin ve http: // localhost veya http://127.0.0.1 çalıştırın (80 numaralı bağlantı noktasını da ekleyebilir). Çalıştırmalı.

Mesele şu ki, nginx IP'sinin docker Sanal Makinesi içinden erişilebilir olması gerekiyor, bu yüzden bu porta doğrudan ana makinenin tarayıcısından erişmek için bu port için geçiş ayarına ihtiyacımız var.


2
HOST:CONTAINERBağlantı noktaları farklı olduğunda bir duruma ihtiyacım vardı , örneğin docker run --detach --publish 8081:80 --name webserver nginx. Bu durumda HOSTsadece portu, yani VirtualBox ayarlarında yönlendirmem gerektiğini buldum Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, önceden 80tahmin ettiğim gibi değil . Dış görünüş ileri konteyner limanından Docker Toolbox Docker ile benim Windows 7 makinede mi 80etmek 192.168.99:8081ve ileri I 192.168.99:8081için localhost:8081çünkü 192.168.99:8081web tarayıcısında bir şey göstermez.
ve1er

13

localhostTalimatları izleyerek '192.168.99.100' yerine kullanabilirsiniz :

Adım 01:

docker-machine ip default

Varsayılan IP'yi göreceksiniz

Adım 02:

docker-machine stop default

Adım 03:

  1. VirtualBox Manager'ı açın (Windows aramasındaki başlangıç ​​programlarından VirtualBox Manager)
  2. Docker Machine VirtualBox görüntünüzü seçin (örneğin: varsayılan)
  3. Ayarlar -> Ağ -> Gelişmiş -> Port Yönlendirme'yi açın
  4. Uygulama adınızı, istediğiniz ana bilgisayar bağlantı noktasını ve konuk bağlantı noktanızı ekleyin i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

Adım # 04: Artık aşağıdakileri yürüterek Docker Makinenizi başlatmaya hazırsınız:

docker-machine start default

Ardından Docker konteynerinizi başlatın ve ona localhost aracılığıyla erişebileceksiniz.

Ayrıntılar için buraya bir göz atın .


2

localhostDocker-makine IP'sine doğrudan ulaşmak yerine beklenen bağlantı noktalarını eşlemek için VirtualBox CLI'yi kullanabilirsiniz.

Docker-machine VM (burada denir default) çalışıyorsa, aşağıdaki gibi kurallar ekleyin ve silin:

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

Sanal Makine çalışmıyorsa veya değiştirmeden önce durdurmak istiyorsanız:

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

Bağlantı noktası yönlendirme kuralının biçimi nerede [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>.

VirtualBox'ta, dahili konteyner bağlantı noktasını değil, Docker haritasının ana bilgisayar bağlantı noktasını eşlemek istediğinizi unutmayın . Ana makine -> VM'yi eşliyorsunuz, ardından Docker, VM -> kapsayıcısını eşliyor.

VirtualBox belgelerine bakın .


1

Bu, ip 192.168.99.100'ü yazmaktan kaçınmanın başka bir kolay yoludur. C:\Windows\System32\drivers\etc\hostsDosyanın sonuna gidin ve ekleyin:

192.168.99.100 docker.awesome veya beğendiğiniz herhangi bir isim.

Dosyayı kaydedin (Yönetici haklarına sahip olmanız gerekir, bu nedenle dosyayı sağ tıkladığınızdan ve düzenlerken kaydedebilmek için yönetici olarak çalıştırdığınızdan emin olun).

Seçtiğiniz alan adına gidin, bu durumda docker.awesome: 8080 ve işte karşınızda.


0

Bir çok denemeden sonra bu ilan tahtasını alabildim.

  1. Kullandığım docker run komutu - docker run -p 4680: 8080 - name bb bulletinboard: 1.0 Burada, 4680 localhost port numarasıdır. 8080, konteynerin dinleyeceği port olan konteyner port numarasıdır. Bu bağlantı noktası numarası Dockerfile'daki EXPOSE komutunda belirtilmiştir.

  2. Ardından web tarayıcısına gidin ve 192.168.99.100:4680 yazın.

Burada 192.168.99.100, docker makinesi IP adresidir (komutunu kullanın -> docker-machine ip)

  1. Bundan sonra, tarayıcı sayfanız şu şekilde açılmalıdır -

görüntü açıklamasını buraya girin

Umarım bu hepinize yardımcı olur !!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.