Docker kapsayıcısında wildfly başlamıyor


10

Windows 10 Pro'da bir Docker kapsayıcısında çalışan Wildfly'nin hoş geldiniz sayfasına erişmeye çalışıyorum. Ben de öyle yaptım:

Görüntüyü çekti:

docker pull jboss/wildfly

Wildfly kapsayıcısını çalıştırın (bu iyi çalışıyor, Wildfly günlüğünde doğru başladığını görebiliyorum):

docker run -it -p 8080:8080 jboss/wildfly

Kapsayıcı kimliğini bulun:

docker ps

IP adresini inceleyin:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" cac63ed21d78

IP adresi, 172.17.0.2bir tarayıcıda http://172.17.0.2:8080/ adresine gidiyorum ancak tarayıcı takılıyor ve zaman aşımına uğruyor. Neyi kaçırıyorum?

GÜNCELLEME

Ben de denedim 127.0.0.1:8080ve o da çalışmıyor

Update2

Konsol günlüğü:

docker --version

#Docker version 19.03.1, build 74b1e89e8a

docker run hello-world

#Hello from Docker!

docker run --detach --publish 8080:80 --name webserver nginx

#Unable to find image 'nginx:latest' locally
#latest: Pulling from library/nginx
#8ec398bc0356: Pull complete
#465560073b6f: Pull complete
#f473f9fd0a8c: Pull complete
#Digest:  sha256:b2d89d0a210398b4d1120b3e3a7672c16a4ba09c2c4a0395f18b9f7999b768f2
#Status: Downloaded newer image for nginx:latest
#c5cdb6de11240b5fe33bc424779721e1b44948797fd6ff389004d0766b71dd17

docker ps

#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124 
#nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver

Stackoverflow.com/a/43762751/7873775 yanıtına bakın ve 10.0.75.1:8080 ve 10.0.75.2:8080'i deneyin.
Evgeniy Khyst

Üzgünüm, ama bu işe yaramadı. Hem docker hem de tarayıcı aynı Windows 10 makinesinde çalışıyor. 10.0.75.xHarici bir adres değil ve tarayıcı web'de bulmaya çalışıyor mu?
ps0604

1
Tamam, sorunu bulmaya çalışalım. Lütfen aşağıdaki CLI komutlarının sonuçlarını gönderin: 1. docker --version, 2. docker run hello-world, 3. docker run --detach --publish 8080:80 --name webserver nginx, 4. sonra localhost'u
Evgeniy Khyst

Lütfen konsol günlüğü ile güncellenen soruya bakın. Denedim localhost:8080ve zaman aşımına uğradı. docker psgösterileriCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c5cdb6de1124 nginx "nginx -g 'daemon of" 10 minutes ago Up 10 minutes 0.0.0.0:8080->80/tcp webserver
ps0604

@Evgeniy Khyst Liman işçiliği ağından bahseden bu makaleyi buldum . Kapsayıcı içinde çalışan sunucunun tüm arabirimleri (makalenin son kısmı) dinlemek zorunda olduğu söyleniyor, bu geçerli mi?
ps0604

Yanıtlar:


3

Varsayılan olarak, bir kapsayıcı oluşturduğunuzda, bağlantı noktalarından hiçbirini dış dünyaya yayınlamaz. Ağ 172.17.XX dahili. -P bayrağıyla ip run docker kapsayıcısını barındırmak için IP adresini bağlamanız gerekiyorsa, şöyle:

-p 8080: 8080

Kaptaki TCP bağlantı noktası 8080'i Docker ana bilgisayarındaki 8080 bağlantı noktasıyla eşleme


Bağlantı noktaları dış dünyaya yayınlanmazsa bu örnek neden işe yarıyor?
ps0604

@ Yanıtı yanlış düzenleyecek misiniz, soruya bir göz atarsanız tam olarak yaptığım şey buydu.
ps0604

@ ps0604 bir ağ sorunu varmış gibi geliyor. Sizin durumunuzda güvenlik duvarı kurallarını kontrol edin
Ivan Vovk

Cevabınız yanlış mı?
ps0604

Cevabım doğru, çünkü dokümantasyon önerisine dayanıyor.
Ivan Vovk

3

Gönderen: https://docs.docker.com/docker-for-windows/networking/

Port yönlendirme localhost için çalışır; --publish, -p veya -P hepsi çalışır. Linux'tan etkilenen bağlantı noktaları ana bilgisayara iletilir.

Bu yüzden http: // localhost: 8080 adresinden erişilebilir olmalıdır


Bu işe yaramazsa, windows örneğini deneyin

docker run -d -p 80:80 --name webserver nginx

Hangisine erişilebilir olmalı http: // localhost: 80

https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples


Bu bile başarısız olursa deneyin:

docker-machine ip default

Ve http: // [docker-machine-ip]: 80 kullanın


1
localhost ile çalışmaz: 8080, özür dilerim
ps0604

Yukarıda yayınlanan örnek jboss / wildfly ile ilgili bir sorun ya da windows ağ olup olmadığını görmek için denemek misiniz?
Tyhal

Ve nginx işe yaramazsa, 'docker-machine ip default' çalıştırabilir ve yerel ana bilgisayar yerine IP'yi kullanmayı deneyin
Tyhal

0

Önemli bilgi Docker container in Windows 10 Pro- bu, Windows'ta Docker'ınızın nasıl çalıştığı konusunda çok genel bir özelliktir. Birçok seçenek örneğin olabilir Docker for Windowsolmaksızın / ile Linux containers, Docker toolboxuzaktan örneği, ....

Genellikle Windows'daki Docker kapsayıcıları genellikle bir tür sanal makinede (Hyper-V, Virtualbox, ...) çalışır. Dolayısıyla, doğrudan Windows ağ ad alanınızdan erişilemeyen ek ağ katmanı vardır. Ancak bağlantılı örnek , bu ek ağ katmanının mevcut olmadığı Linux makinesinde çalışır. Ve bu, kopyala / yapıştırılan Linux örneğinin Windows'ta çalışmamasının bir nedenidir. Bu yüzden kabı her zamanki gibi çalıştırın ve bağlantı noktası 8080'i ortaya çıkarın:

docker run -it -p 8080:8080 jboss/wildfly

Ancak, erişim için IP farklı olacaktır ve kapsayıcı IP'si kullanılamaz, çünkü bu dahili docker ağına Windows'dan erişilemez. Bunun yerine Windows işletim sisteminizin IP'sini kullanmayı deneyin. Sonunda kullanılan Docker on Windowsçözümün belgelerini kontrol edin ve açıktaki portlar için hangi IP'nin kullanıldığını bulun.

Gelişmiş windows / linux ağ oluşturma becerileriniz varsa, kapsayıcı ağ ad alanından ara VM ağ katmanından Windows ağ katmanına bir şekilde bağlantı noktası yönlendirebilir / iletebilirsiniz. Ancak oldukça karmaşık olabilir.


Jan, Windows için Docker Desktop'ı yükledim , görüntüyü indirdim ve yukarıdaki öğreticide açıklandığı gibi Wildfly kapsayıcısını çalıştırdım. Konsolda iyi başladığını görüyorum ve 8080:8080teoride çalışması gereken şey bu, ama çalışmıyor. Ağ hakkında bilmiyorum, nereden bakmaya başlamalıyım?
ps0604

@ ps0604 Linux eğitimini körü körüne takip etmek istiyorsanız, Linux kullanın. Dediğim gibi doc senin arkadaşın - docs.docker.com/docker-for-windows/networking açıkça belirtilmiştir There is no docker0 bridge on Windows: Because of the way networking is implemented in Docker Desktop for Windows, you cannot see a docker0 interface on the host. This interface is actually within the virtual machine.. Lütfen bu sınırlama ile ilgilenin.
Jan Garaj

0

Aynı sorunla karşılaşan bir windows sistemi üzerinde çalışan bir akranım vardı. Bunun için çok çaba sarf etti ve hiçbir yere ulaşamadı. Görünüşe göre Windows için Docker Desktop ile olan birçok garip şey var. Sonunda windows için linux alt sistemini kurduk ve docker'ı oraya kurduk ve o zamandan beri onun için bir cazibe gibi çalıştı. Pencerelere bağlı kalmak istiyorsanız ve linux alt sistemi üzerinde çalışmayı önemsemiyorsanız, o rotadan aşağı gitmenizi öneririm. Jan Garaj'ın önerdiklerinden daha da ileri gittik ve sadece zaman kaybı olduğunu gördük. Windows için Docker Desktop, dev kaplar vb. Kullanarak tamamen içinde çalıştığınız bir env olmalıdır. Host-Container şeyler onunla bir acıdır.


Evet, katılıyorum, Windows yerine Ubuntu'da kapsayıcılar oluşturacağım, orada sorunum yok. Tek şey Windows'da geliştirmem, bu yüzden üç kez, bir kez pencereler geliştirirken, daha sonra linux konteynerinde ve sonunda konteyneri buluta yüklediğimde test etmem gerekecekti. Kapsayıcıyı Windows'ta çalıştırabilirsem, sadece iki kez test ederdim.
ps0604

bu yüzden linux alt sistemini önerdim .. aslında bağlamı 3 kez değiştirmek zorunda değilsiniz, belki 2-2,5 kez;)
Sam Thomas
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.