2016-12-15 49 views
6

Uruchamiając na tym systemie system MacOS i program dokujĘ ... cy do systemu Ubuntu, nie jestem w stanie przesłać mi adresów IP mojej sieci lokalnej. Poniżej znajduje się konfiguracja sieciowa mojego kontenera dokowanego. Mogę wysłać polecenie ping do adresu IP komputera hosta, ale nie mam dostępu do innych adresów IP w sieci lokalnej.Nie można uzyskać dostępu do lokalnej sieci IP z kontenera dokowania

root# ping 172.17.101.192 
PING 172.17.101.192 (172.17.101.192) 56(84) bytes of data. 
From 172.17.0.3 icmp_seq=1 Destination Host Unreachable 
From 172.17.0.3 icmp_seq=2 Destination Host Unreachable 

root# ifconfig   
eth0  Link encap:Ethernet HWaddr 02:42:ac:11:00:03 
      inet addr:172.17.0.3 Bcast:0.0.0.0 Mask:255.255.0.0 
      inet6 addr: fe80::42:acff:fe11:3/64 Scope:Link 

Czy istnieje konfiguracja sieci, która pomogłaby mi wykonać tę operację?

Próbowałem net=host, ale to nie pomaga.

+0

której wersji okna dokowanego używasz? – Gaafar

+0

'1.13.0-rc4, kompilacja 88862e7' – montrealist

+0

Czy używasz docker-machine lub docker dla mac (https://docs.docker.com/engine/installation/mac/)? –

Odpowiedz

8

Używałem okna dokowanego dla mac, problemem była wewnętrzna sieć stacji dokującej, która kolidowała z moją lokalną adresacją sieci. Aby rozwiązać ten problem, muszę przejść do Preferences w menu dokcer. W menu Preferencje Daemon>Advanced Menu, mogę dostarczyć inne bip.

{ 
    "bip" : "12.12.0.1/24" 
} 

Kliknij Zastosuj i uruchom ponownie. Następnym razem okno dokowane rozpocznie się od sieci wewnętrznej jako 12.12.0.1/24.

2

Próbowałem następujących, i to działa:

mac-os $> ifconfig 
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 
    ether 78:31:c1:bd:4b:84 
    inet6 fe80::1425:a90d:9c00:ef53%en0 prefixlen 64 secured scopeid 0x4 
    inet 10.191.41.1 netmask 0xfffff800 broadcast 10.191.47.255 
    nd6 options=201<PERFORMNUD,DAD> 
    media: autoselect 
    status: active 

Więc moje ip jest 10.191.41.1. Następnie:

mac-os $> docker run -ti --rm ubuntu bash -c "apt-get update && apt-get install -y inetutils-ping && ping 10.191.41.1" 

Który instaluje polecenie "ping" i próbuje pingować mojego hosta. Otrzymuję właściwe odpowiedzi:

[...] 
PING 10.191.41.1 (10.191.41.1): 56 data bytes 
64 bytes from 10.191.41.1: icmp_seq=0 ttl=37 time=0.303 ms 
64 bytes from 10.191.41.1: icmp_seq=1 ttl=37 time=0.536 ms 
[...] 
+0

Mam zaktualizowane moje pytanie – badal16

+0

Mogę pingować mój mac, ale nie mogę uzyskać dostępu do jednego z serwerów, który jest w sieci lokalnej. Docker nie tworzy sieci mostów, która byłaby normalna na VM.Tak więc chcę utworzyć sieć pomostową, która miałby taki sam dostęp z mojego komputera Mac. – badal16

2

Zgaduję, że używasz maszyny dokujcej.

Powinieneś sprawdzić docker for mac, ponieważ ma on pewną liczbę , która może sprawić, że to zadziała. Właśnie tego używam i mogę docierać do innych hostów w mojej wewnętrznej sieci z dockera.

+0

Nie, używamy okna dokowanego na Macu. Czy wykonałeś jakąś specjalną konfigurację sieci na swoich kontenerach? – montrealist

+0

Nic specjalnego. ale używam gałęzi stabilnej i (patrząc na posiadaną wersję) jesteś w gałęzi beta. –

+1

(chociaż właśnie zainstalowałem gałąź beta, która działa również dla mnie) –

2

Myślę, że wewnętrzna sieć stacji dokującej może kolidować z adresowaniem sieci lokalnej.

Spróbuj uruchomić Docker, zmieniając domyślną sieć wewnętrzną na coś, co nie powoduje konfliktu, jako 172.31.0.0/24. Dodanie opcji startowych Döcker --bip 172.31.0.1/24, prawdopodobnie umieszczonych w /etc/default/docker:

# Use DOCKER_OPTS to modify the daemon startup options. 
DOCKER_OPTS="--bip 172.31.0.1/24" 

UPDATE: Choć jest to prawdą w systemie Linux, Mac realizacja jest inna, patrz Dokumentacja here, więc to zależy od tego, czy używasz Döcker dla Mac lub dla systemu Linux.

Wystarczy przetestować, spróbuj podłączyć laptopa do innej sieci, wystarczy, że znajdzie się w zasięgu 192.168.0.0/16.