2015-01-26 19 views
6

Używam boot2docker do uruchamiania obrazów Docker. Wiem bardzo dobrze, że muszę uzyskać dostęp do adresu IP boot2docker, aby uzyskać dostęp do kontenera Docker.Uzyskiwanie dostępu do kontenera dokera z iOS Simulator

Zasadniczo w terminalu jest curl $(boot2docker ip):49155

Kiedy zrobić to w ten sposób w Chrome lub Safari, wszystko wydaje się w porządku. Po wprowadzeniu adresu w przeglądarce Safari w Symulatorze iOS 8 (iOS 8) pojawia się komunikat: Safari nie może otworzyć strony, ponieważ utracono połączenie sieciowe.

Próbowałem uruchomić inną aplikację localhost-ish - SimpleHTTPServer w języku Python, dostępną przez 0.0.0.0:4000 i to wydaje się działać dobrze (strona ładuje się w Symulatorze iOS).

Czy to błąd w Symulatorze Docker/iOS, czy też muszę wykonać dodatkowe ustawienia?

Odpowiedz

5

boot2docker to maszyna wirtualna działająca na komputerze. Twój komputer Mac jest "hostem", a maszyna boot2docker jest "gościem". Symulator iOS jest także "gościem".

Urządzenia gościnne mogą uzyskać dostęp do sieci na wiele sposobów. boot2docker jest skonfigurowany do korzystania z NAT, co oznacza, że ​​możesz od razu uzyskać od gościa do, ale możesz uzyskać tylko dla gościa z komputera hosta. Symulator iOS nie jest hostem (ma własny adres IP i własny interfejs sieciowy), więc nie może dotrzeć do gościa boot2docker.

Najprostszym rozwiązaniem jest wykonanie przekierowania portów. boot2docker's instructions zaproponować coś podobnego

boot2docker ssh -L 49155:localhost:49155 

Powoduje portu 49155 na komputerze hosta (obecnie nic nie robi), aby przekazać wszystkie połączenia do portu 49155 na gościa boot2docker.

Teraz z symulatora systemu iOS można dotrzeć do serwera tak, jakby był na hoście: 0.0.0.0:49155. Jeśli korzystasz z fizycznego urządzenia z systemem iOS, musisz uzyskać zewnętrzny adres IP komputera Mac i go użyć.

Alternatywą dla przekierowania portów w ten sposób byłoby użycie Vagrant do samodzielnego skonfigurowania maszyny wirtualnej (z uruchomionym boot2docker lub CoreOS lub dowolnym nowym Linuksem) i użycie tej VM w sieci "zmostkowanej" (co powoduje, że gość jest dostępny spoza gospodarz).

+0

Wielkie dzięki za dokładną odpowiedź! Właściwie to, co zrobiłem, gdy spodziewałem się czegoś podobnego, co powiedziałeś (ale bez tego wyraźnego zrozumienia), więc zamiast tego użyłem narzędzia SquidMan, aby "odsłonić" boot2docker (+ kontener dokowania wewnątrz) do lokalnej sieci. Następnie na urządzeniu ustawiłem proxy HTTP i działa całkiem dobrze. Niestety symulator iOS nie pozwala mi ustawić w swoim interfejsie użytkownika serwera proxy HTTP, więc zamiast tego spróbuję twojej sugestii! – Michal

Powiązane problemy