2016-12-29 86 views
8

Widzę wiele osób borykających się z tym, coś w rodzaju poczucia, że ​​może to być błąd w obrazie kontenera Redisa, a inni wydają się ścigać podobny problem.Łączenie się z Redis działającym w Docker Container z komputera Hosta

Używam standardowego obrazu redis na DockerHub. (https://github.com/dockerfile/redis)

działa to tak:

docker run -it -p 6379:6379 redis bash 

Gdy jestem w mogę uruchomić serwer, a nie ping Redis z obrazka pojemnika.

Niestety, nie mogę połączyć się z kontenerem redis od mojego hosta.

Próbowałem ustawień, takich jak poniżej.

bind 127.0.0.1 

i usunięciu powiązania z konfiguracji

i próbował wyłączyć tryb chroniony

protected-mode no 

wiem, że czyta plik konfiguracyjny, odkąd zmienił porty tylko do testowania, a ja był w stanie to zrobić.

Używam systemu Windows 10, więc być może jest to problem z siecią Windows. Nigdy nie mam problemu z dockerem normalnie. Jestem zaskoczony

+0

W jaki sposób próbujesz się połączyć z pojemnik redis? Czy próbujesz uzyskać dostęp do bash w kontenerze redis lub próbujesz połączyć się z kontenerem redis za pomocą portu 6379? –

Odpowiedz

3

Problem polega na tym ze swoim wiążą, należy ustawić następujące:

bind 0.0.0.0 

Spowoduje to ustawienie redis do związania wszystkich interfejsów dostępnych w kontenerach środowiska z jednego interfejsu (eth0) i pętla zwrotna (lo) redis zostanie połączona z obydwoma powyższymi. Powinieneś rozważyć dodanie środków bezpieczeństwa za pośrednictwem innych dyrektyw w config file lub za pomocą zewnętrznych narzędzi, takich jak firewalls. ponieważ dzięki temu podejściu każdy może połączyć się z serwerem redis.

Ustawienie domyślne to bind 127.0.0.1, a ustawienie to spowoduje, że redis będzie tylko nasłuchiwał na interfejsie pętli zwrotnej i będzie dostępny tylko z wnętrza kontenera. (Dla bezpieczeństwa)

Aby uruchomić Redis z pliku konfiguracyjnego niestandardowe:

sudo docker run -d --name redis-test -p 6379:6379 -v /path/to/redisconf/redis.conf:/redis.conf redis redis-server /redis.conf 

Teraz do zweryfikowania na hoście Döcker z redis-tools zainstalowane:

sudo redis-cli       
127.0.0.1:6379> 
127.0.0.1:6379> set farhad likes:stackoverflow 
OK 
127.0.0.1:6379> get farhad 
"likes:stackoverflow" 
127.0.0.1:6379> 

Można również Connnect do pojemnika redis ze związku zewnętrzny host przez:

redis-cli -h 'IP-address-of-dockerhost-running-redis-container' 
+0

Dziękuję za pomoc, niezupełnie mnie tam dostałem. Wygląda na to, że Redis nie lubi tego, kiedy próbuję się połączyć z mojego komputera-hosta, ale odwróciłem drugi obraz w doku i otrzymałem adres IP obrazu dokowanego redis i mogłem się połączyć.Z drugiego obrazu dokowanego mogłem połączyć się z serwerem redis w następujący sposób: redis-cli -h 172.17.0.2 – user3888307

+0

Powinieneś być w stanie połączyć się z nim, jeśli możesz połączyć się z innego kontenera. Po prostu upewnij się, że masz 'bind 0.0.0.0' w swojej konfiguracji niestandardowej i' wystawiaj 6378' podczas tworzenia kontenera. z dockera, z którym możesz się połączyć, uruchamiając 'sudo redis-cli'. Jeśli wszystko zawiedzie, daj mi krok po kroku to, co robisz, więc mogę odtworzyć problem. –

+0

Dzięki Farhad za pomoc. Wygląda na to, że coś jest z obrazem redis w hubie docker, zainstalowałem redis na serwerze Ubuntu i działało tak, jak bym się spodziewał. Po prostu użyję tego, aby trafić redis z mojego hosta lokalnego – user3888307