TL; DR VirtualBox ana makinenizin ağ modunu kontrol edin - bridged
sanal makinenin (ve barındırdığı Docker konteynerinin) yerel ağınızda erişilebilir olmasını istiyorsanız bu olmalıdır .
Sizin kafa karışıklığınız, uygulamanıza HTTP aracılığıyla erişmek için hangi ana bilgisayara bağlanacağınızdan kaynaklanıyor gibi görünüyor. Yapılandırmanızın ne olduğunu gerçekten açıklamadınız - etiketlerinizde "Windows" ve "VirtualBox" olduğu gerçeğine dayanarak bazı tahminlerde bulunacağım.
Bir Windows ana bilgisayarında VirtualBox'ta çalışan bir Linux çeşidi üzerinde çalışan Docker'ınız olduğunu tahmin ediyorum. IP adreslerini aşağıdaki gibi etiketleyeceğim:
D
= Docker konteynerinin IP adresi
L
= VirtualBox'ta çalışan Linux ana bilgisayarının IP adresi
W
= Windows ana bilgisayarının IP adresi
Go uygulamanızı Windows ana makinenizde çalıştırdığınızda, ona http://W:8080/
yerel ağınızın herhangi bir yerinden bağlanabilirsiniz . Bu, Go uygulamasının Windows makinesinde 8080 numaralı bağlantı noktasını ve IP adresinde 8080 numaralı bağlantı noktasına erişmeye çalışan herkesi bağladığı için çalışır.W
bağlanır.
Ve işte burada daha karmaşık hale geliyor:
VirtualBox, bir sanal makine (VM) kurduğunda, ağı birkaç farklı moddan birinde yapılandırabilir. Farklı seçeneklerin ne olduğunu hatırlamıyorum ama senin istediğin şey bridged
. Bu modda VirtualBox, sanal makineyi ağınızdaki bağımsız bir makineymiş gibi yerel ağınıza bağlar, tıpkı ağınıza takılı diğer makineler gibi. In bridged
modunda sanal makine başka bir makine gibi ağınızdaki görünür. Diğer modlar işleri farklı şekilde ayarlar ve makine ağınızda görünmez.
Dolayısıyla, Linux ana bilgisayarı ( bridged
) için ağı doğru bir şekilde kurduğunuzu varsayarsak, Linux ana bilgisayarı yerel ağınızda bir IP adresine (192.168.0.x gibi bir şey) sahip olacak ve Docker konteynerinize adresinden erişebileceksiniz http://L:8080/
.
Linux ana bilgisayarı bridged
sizden farklı bir moda ayarlanmışsa , olabilir , Windows ana bilgisayardan erişmek mümkün, ancak bu İçinde tam olarak ne modu bağlıdır gidiyor.
DÜZENLE - Aşağıdaki yorumlara dayanarak, yukarıda anlattığım durumun doğru olduğuna çok benziyor.
Biraz yedekleyelim: Docker'ın bilgisayarımda nasıl çalıştığı burada (Ubuntu Linux).
Elinizde aynı komutunu çalıştırın düşünün: docker run -p 8080:8080 dockertest
. Bunun yaptığı şey, dockertest
görüntüye dayalı yeni bir kapsayıcı başlatmak ve Linux ana bilgisayarındaki (benim bilgisayarım) 8080 numaralı bağlantı noktasını kapsayıcıdaki 8080 bağlantı noktasına iletmektir. Docker, Docker daemon'un iletişim kurmasına ve konteynerlerin birbiriyle iletişim kurmasına izin vermek için kendi dahili ağını (kendi IP adresleri kümesiyle) kurar. Yani temelde bununla yaptığınız -p 8080:8080
şey Docker'ın dahili ağını "harici" ağa bağlamaktır - yani. ana bilgisayarın ağ bağdaştırıcısı - belirli bir bağlantı noktasında.
Şimdiye kadar benimle? Tamam, şimdi bir adım geri gidip sisteminize bakalım. Makineniz Windows çalıştırıyor - Docker (şu anda) Windows üzerinde çalışmıyor, bu nedenle kullandığınız araç bir VirtualBox sanal makinesinde bir Linux ana bilgisayarı kurdu. Bunu docker run
ortamınızda yaptığınızda, tam olarak aynı şey olur - Linux ana bilgisayarındaki 8080 bağlantı noktası, kapsayıcıdaki 8080 bağlantı noktasına bağlanır. Buradaki en büyük fark, Windows ana makinenizin, konteynerin çalıştığı Linux ana bilgisayarı olmamasıdır, bu nedenle burada başka bir katman vardır ve bu katman boyunca sorunla karşılaştığınız iletişim.
İhtiyacınız olan şey iki şeyden biridir:
Docker konteynerini ana bilgisayar bağlantı noktasına bağladığınız gibi, VirtualBox VM'deki 8080 numaralı bağlantı noktasını Windows ana bilgisayarındaki 8080 numaralı bağlantı noktasına bağlamak için.
VirtualBox VM'yi doğrudan yerel ağınıza bridged
yukarıda anlattığım ağ modu ile bağlamak için .
İlk seçeneğe giderseniz, kapsayıcıya Windows ana bilgisayarının IP adresi veya ana bilgisayar adının http://W:8080
olduğu yerden erişebileceksiniz W
. İkincisini seçerseniz, kapsayıcıya Linux VM'nin IP adresi veya ana bilgisayar adı http://L:8080
olduğu yerden erişebileceksiniz L
.
İşte tüm üst düzey açıklama bu - şimdi VirtualBox VM'nin yapılandırmasını nasıl değiştireceğinizi bulmanız gerekiyor. Ve işte size gerçekten yardımcı olamayacağım yer - Windows makinenizde tüm bunları yapmak için hangi aracı kullandığınızı bilmiyorum ve Windows üzerinde Docker kullanımına hiç aşina değilim.
VirtualBox yapılandırma penceresine ulaşabilirseniz, aşağıda açıklanan değişiklikleri yapabilirsiniz. Ayrıca VM'leri değiştirecek bir komut satırı istemcisi var, ancak buna aşina değilim.
İçin bridged
modu (ve bu gerçekten en basit bir seçimdir), senin VM kapatmaya üstündeki "Ayarlar" butonuna tıklayın ve ağ modunu değiştirmek bridged
, daha sonra VM yeniden başlatın ve sen iyi gitmek. Sanal makine, DHCP aracılığıyla yerel ağınızdan bir IP adresi almalı ve bu IP adresindeki ağdaki diğer bilgisayarlar tarafından görülebilmelidir.