Użytkownik ZimaOS chciał, aby kontener Docker miał własny adres w tej samej sieci LAN co serwer. IceWhale wyjaśniło, że domyślna sieć bridge już nadaje kontenerowi wewnętrzny adres, natomiast adres widoczny w sieci LAN zazwyczaj wymaga macvlan.
Długi przykład polecenia zamieszczony przez społeczność nigdy nie został potwierdzony jako działający przez jego autora. Późniejsze odpowiedzi wykazały, że zawierał skopiowane typograficzne cudzysłowy i opcje z pojedynczym myślnikiem, a innemu użytkownikowi nadal nie udało się podłączyć zainstalowanej aplikacji. Dlatego ta strona wyjaśnia architekturę i bezpieczny plan działania, nie przedstawiając tego niezweryfikowanego bloku poleceń jako instrukcji dla ZimaOS.
Adres IP bridge i adres IP w sieci LAN to różne cele
| Tryb | Tożsamość kontenera | Typowy sposób dostępu |
|---|---|---|
| Domyślny bridge | Prywatny adres Docker | Użyj adresu hosta ZimaOS oraz opublikowanego portu |
| Host | Współdzieli przestrzeń nazw sieci hosta | Brak osobnego adresu kontenera |
| Macvlan | Własna tożsamość warstwy 2 i adres w sieci LAN | Inne urządzenia w sieci LAN mogą łączyć się z nim bezpośrednio |
Większość aplikacji nie potrzebuje osobnego adresu IP w sieci LAN. Publikowanie portów na hoście ZimaOS jest prostsze i pozwala uniknąć dodatkowych wymagań warstwy 2.
Zaplanuj macvlan przed jego utworzeniem
- Zidentyfikuj rzeczywisty interfejs nadrzędny używany do ruchu w sieci LAN.
- Zapisz podsieć i bramę.
- Zarezerwuj adres poza pulą DHCP routera albo utwórz niekolidujący zarządzany zakres.
- Sprawdź, czy przełącznik, most Wi-Fi, hiperwizor lub karta sieciowa USB zezwala na używanie wielu adresów MAC.
- Utwórz kopię zapasową definicji Compose aplikacji i potwierdź dostęp do lokalnej konsoli.
Oficjalna dokumentacja macvlan Docker ostrzega, że kontenery macvlan nie mogą domyślnie komunikować się bezpośrednio z hostem z powodu ograniczenia jądra Linuksa.
Uwzględnij izolację między hostem a kontenerem
Inne urządzenia w sieci LAN mogą mieć dostęp do kontenera, podczas gdy sam ZimaOS nie będzie mógł się z nim komunikować. Może to zakłócić działanie odwrotnych proxy, kontroli stanu, usług pamięci masowej lub aplikacji, które muszą wywoływać kontener z poziomu hosta. Docker opisuje dwie zaawansowane możliwości: podłączenie kontenera do dodatkowej sieci bridge albo utworzenie na hoście pasującego interfejsu macvlan.
Dlaczego skopiowane polecenia były niewiarygodne
W poście społeczności użyto typograficznych cudzysłowów i półpauz zamiast cudzysłowów ASCII oraz opcji z dwoma myślnikami. Kopiowanie z systemu Windows zachowało te znaki, powodując problemy z interpretacją przez powłokę i Docker. Późniejszy uczestnik poprawił te elementy, ale nadal nie zdołał uruchomić już zainstalowanej aplikacji ZimaOS w nowej sieci.
Polecenia zawierały również dane sieciowe wpisane na stałe i zakładały konkretny interfejs nadrzędny. Uruchomienie ich w niewłaściwej podsieci może spowodować konflikty adresów lub odciąć dostęp. Z tego powodu korzystaj z aktualnych przykładów Dockera i dostosowuj je dopiero po zweryfikowaniu każdej wartości.
Czy macvlan automatycznie pobiera adres z DHCP?
Wbudowany mechanizm macvlan Dockera zazwyczaj korzysta z zarządzania adresami IP przez Docker, a nie z dzierżawy routera żądanej przez każdy kontener. Zdefiniuj bezpieczną podsieć i zakres adresów IP, a następnie przypisz adresy ręcznie lub pozwól Dockerowi przydzielać je w tym zakresie. Nie nakładaj tego zakresu na pulę DHCP routera, chyba że router rezerwuje te adresy.
Ograniczenia interfejsu ZimaOS opisane w wątku źródłowym
Autor oryginalnego posta nie znalazł działającego przełącznika w interfejsie graficznym, który pozwalałby podłączyć zainstalowaną aplikację do macvlan, a inny użytkownik zaproponował dodanie takiej funkcji. Eksportowanie, edytowanie i ponowne importowanie Compose może utworzyć osobno zarządzany stos; aktualizacje i elementy sterujące Sklepu aplikacji mogą wtedy nie działać tak jak w oryginalnym szablonie.
Często zadawane pytania dotyczące adresów IP kontenerów ZimaOS
Czy kontener bridge ma już własny adres IP?
Tak, ale zazwyczaj jest to wewnętrzny adres Docker, a nie pełnoprawny adres w sieci LAN.
Czy ZimaOS może bezpośrednio połączyć się z kontenerem macvlan?
Nie domyślnie. Docker opisuje izolację hosta jako ograniczenie jądra.
Czy powinienem skopiować polecenia z wątku źródłowego?
Nie. Zawierały błędy typograficzne i nie zostały potwierdzone jako działający sposób wdrożenia aplikacji ZimaOS.
