Saya mencoba mengakses halaman pembuka Wildfly yang berjalan di wadah Docker di Windows 10 Pro. Inilah yang saya lakukan:
Menarik gambar:
docker pull jboss/wildfly
Jalankan wadah Wildfly (ini berfungsi dengan baik, di log Wildfly saya bisa melihatnya mulai dengan benar):
docker run -it -p 8080:8080 jboss/wildfly
Temukan ID wadah:
docker ps
Periksa alamat IP:
docker inspect -f "{{ .NetworkSettings.IPAddress }}" cac63ed21d78
Alamat IP-nya adalah 172.17.0.2
, di browser saya pergi ke http://172.17.0.2:8080/ tetapi browser hang dan time out. Apa yang saya lewatkan?
MEMPERBARUI
Saya juga mencoba 127.0.0.1:8080
dan tidak berhasil juga
UPDATE2
Log konsol:
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
10.0.75.x
alamat eksternal dan browser mencoba menemukannya di web?docker --version
, 2.docker run hello-world
, 3.docker run --detach --publish 8080:80 --name webserver nginx
, 4. kemudian coba untuk membuka localhost: 8080localhost:8080
dan gagal .docker ps
menunjukkanCONTAINER 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
Jawaban:
Secara default, ketika Anda membuat sebuah wadah, itu tidak mempublikasikan port-portnya ke dunia luar. Jaringan 172.17.XX bersifat internal. Jika Anda perlu mengikat alamat IP untuk menjadi tuan rumah menjalankan ip docker dengan -p flag, seperti itu:
-p 8080: 8080
sumber
Dari: https://docs.docker.com/docker-for-windows/networking/
Jadi itu harus dapat diakses dari http: // localhost: 8080
Jika itu tidak berhasil, coba contoh windows
Yang seharusnya dapat diakses http: // localhost: 80
https://docs.docker.com/docker-for-windows/index#explore-the-application-and-run-examples
Jika itu gagal, coba:
Dan gunakan http: // [buruh pelabuhan-mesin-ip]: 80
sumber
Informasi kuncinya adalah
Docker container in Windows 10 Pro
- ini spesifikasi yang sangat umum tentang cara kerja Docker Anda di Windows. Mungkin ada banyak pilihan misalnyaDocker for Windows
dengan / tanpaLinux containers
,,Docker toolbox
contoh jarak jauh, ....Umumnya wadah Docker pada Windows berjalan di beberapa jenis mesin virtual (Hyper-V, Virtualbox, ...), biasanya. Jadi ada lapisan jaringan tambahan, yang mungkin tidak dapat diakses langsung dari namespace jaringan Windows Anda. Tapi contoh terkait berjalan di mesin Linux, di mana lapisan jaringan tambahan ini tidak ada. Dan itulah alasan mengapa contoh copy / paste Linux tidak berfungsi pada Windows. Jadi jalankan kontainer seperti biasa dan biarkan port 8080:
Tetapi IP untuk akses akan berbeda dan IP kontainer tidak dapat digunakan, karena jaringan buruh pelabuhan internal sangat mungkin tidak dapat diakses dari Windows. Alih-alih mencoba menggunakan IP OS Windows Anda. Akhirnya, periksa dokumentasi
Docker on Windows
solusi yang digunakan dan temukan IP mana yang digunakan untuk port yang terbuka.Jika Anda memiliki keterampilan jaringan windows / linux yang maju, maka Anda dapat merutekan / meneruskan port dari namespace jaringan kontainer, melalui lapisan jaringan VM menengah ke lapisan jaringan Windows. Tapi itu bisa sangat rumit.
sumber
8080:8080
itu yang secara teori seharusnya bekerja, tetapi tidak. Saya tidak tahu tentang jaringan, di mana saya harus mulai mencari?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.
. Harap atasi batasan itu.Saya memiliki rekan kerja di sistem windows yang menghadapi masalah yang sama. Dia berusaha keras untuk itu dan tidak bisa ke mana-mana. Ada banyak hal aneh yang terjadi dengan Docker Desktop untuk windows. Kami akhirnya hanya menginstal subsistem linux untuk windows dan menginstal buruh pelabuhan di sana dan itu bekerja seperti pesona baginya sejak saat itu. Jika Anda ingin tetap menggunakan windows dan Anda tidak keberatan bekerja pada subsistem linux, saya sarankan Anda turun rute itu. Kami melangkah lebih jauh dari yang disarankan Jan Garaj dan hanya menganggapnya sebagai pemborosan waktu. Docker Desktop untuk Windows dimaksudkan untuk menjadi env di mana Anda benar-benar bekerja di dalamnya - menggunakan wadah dev dll. Host-Container hal yang merepotkan.
sumber