2017-04-08 1 views
0

Ich bin mit meinem Docker-Container mit:Wie bekomme ich meinen docker centos sshd passwordless Server läuft?

docker run -d sequenceiq/hadoop-docker:2.6.0 

Die Dockerfile is here.

Nachdem es auf meinem Mac gestartet wird - ich bin mit docker ps und bekommen:

6bfa4f2fd3b5  sequenceiq/hadoop-docker:2.6.0 "/etc/bootstrap.sh -d" 4 minutes ago  Up 4 minutes  22/tcp, 8030-8033/tcp, 8040/tcp, 8042/tcp, 8088/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp, 50090/tcp kind_hawking 

Dann bin ich

laufen
ssh -v localhost -p 22 

und ich bin immer

OpenSSH_7.4p1, LibreSSL 2.5.0 
debug1: Reading configuration data /Users/User/.ssh/config 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: Connecting to localhost [::1] port 22. 
debug1: connect to address ::1 port 22: Connection refused 
debug1: Connecting to localhost [127.0.0.1] port 22. 
debug1: connect to address 127.0.0.1 port 22: Connection refused 
ssh: connect to host localhost port 22: Connection refused 

Annahmen: Ich denke, das ist kein Duplikat der anderen Centos Sshd Fragen, da dies ein anderer Cent ist OS Version. (Für diejenigen, die ähnlich sind - es tut was die potentiell ähnliche Frage stellt und es funktioniert nicht).

Meine Frage ist: Wie bekomme ich meine docker centos sshd passwortlosen Server läuft?


Edit: @ Andrew war super-hilfreich helfen mir meine Frage zu verfeinern - so hier geht.

mein Hier wird Dockerfile aktualisiert

VON sequenceiq/Hadoop-Docker: 2.6.0

CMD ["/etc/bootstrap.sh", "-d"] 

# Hdfs ports 
EXPOSE 50010 50020 50070 50075 50090 8020 9000 
# Mapred ports 
EXPOSE 10020 19888 
#Yarn ports 
EXPOSE 8030 8031 8032 8033 8040 8042 8088 
#Other ports 
EXPOSE 49707 2122 

EXPOSE 9000 

EXPOSE 2022 

Jetzt baue ich dies mit:

sudo docker build -t my-hdfs . 

Dann läuft ich dies mit:

sudo docker run -d -p my-hdfs 

Dann mit Ich überprüfe die Prozesse:

sudo docker ps 

mit einem Ergebnis wie:

d9c9855cfaf0  my-hdfs    "/etc/bootstrap.sh -d" 2 minutes ago  
Up 2 minutes  0.0.0.0:32801->22/tcp, 0.0.0.0:32800->2022/tcp, 
0.0.0.0:32799->2122/tcp, 0.0.0.0:32798->8020/tcp, 0.0.0.0:32797->8030/tcp, 
0.0.0.0:32796->8031/tcp, 0.0.0.0:32795->8032/tcp, 0.0.0.0:32794->8033/tcp, 
0.0.0.0:32793->8040/tcp, 0.0.0.0:32792->8042/tcp, 0.0.0.0:32791->8088/tcp, 
0.0.0.0:32790->9000/tcp, 0.0.0.0:32789->10020/tcp, 0.0.0.0:32788->19888/tcp, 
0.0.0.0:32787->49707/tcp, 0.0.0.0:32786->50010/tcp, 0.0.0.0:32785->50020/tcp, 
0.0.0.0:32784->50070/tcp, 0.0.0.0:32783->50075/tcp, 0.0.0.0:32782->50090/tcp 
agitated_curran 

Dann die IP-Adresse zu bekommen Ich bin mit:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' d9c9855cfaf0 

mit einem Ergebnis wie

172.17.0.3 

Testen Dann bin ich es mit:

OpenSSH_7.4p1, LibreSSL 2.5.0 
debug1: Reading configuration data /Users/User/.ssh/config 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: Connecting to 172.17.0.3 [172.17.0.3] port 32800. 

debug1: connect to address 172.17.0.3 port 32800: Operation timed out 
ssh: connect to host 172.17.0.3 port 32800: Operation timed out 

Meine Frage ist: Laufen Wie komme ich meine Docker centos sshd passwordless Server

ssh -v 172.17.0.3 -p 32800 

dies ein Ergebnis gibt?

Antwort

3

Sie versuchen, eine Verbindung zu Ihrem lokalen SSH-Server statt Container herzustellen.Um eine Verbindung zu einem beliebigen Port innerhalb des Containers herzustellen, müssen Sie ihn offenlegen und veröffentlichen und möglicherweise einem anderen Port zuordnen, insbesondere dann, wenn Sie mehrere ähnliche Container auf verschiedenen Ports auf demselben Host ausführen möchten. Siehe Expose.

Also in Ihrem Fall sollte Ihr Befehl

sein
docker run -p 2222:22 -d sequenceiq/hadoop-docker:2.6.0 

und SSH-Befehl

ssh -v localhost -p 2222 

Verfügbarmachen von Docker-Port (wie in Ihrem verknüpften Docker-Datei zu sehen ist) macht es anderen Docker Behälter zugänglich, aber nicht zu deinem Host-Rechner. Um den Unterschied zwischen offenen und veröffentlichten Ports zu verstehen, siehe this question

Wenn ich jedoch versuchte, eine Verbindung zu Port 2222 herzustellen, hat es nicht funktioniert. Wenn ich Dockerfile der Version 2.6.0 anschaue, habe ich festgestellt, dass es einen Fehler hat, bei dem sshd so konfiguriert wurde, dass er Port 2122 abhört, aber der exponierte Port ist 22, wie man sehen kann here. Wenn ich versucht habe, ein neues Dockerfile zu erstellen, ist es in Schritt 31 fehlgeschlagen, also sollten Sie es weiter infiltrieren.

bearbeiten nach Frage Update:

Blick auf Docker ps Ausgang bereitgestellt und auf Dockerfile. Und wir sehen

0.0.0.0:32799->2122/tcp 
0.0.0.0:32800->2022/tcp 

Sie als ssh -v localhost -p 32799 verbinden sollte statt 32800 in Ausgabe sshd konfiguriert auf Port 2122 zu hören (keine vollständige dockerfile von Ihnen haben, wenn Sie nicht geändert haben, dass, obwohl da wir) seit nichts ist auf Port 2022 im Container zu hören

+0

Danke - das war super-hilfreich - Ich habe die Frage basierend auf Ihrem Feedback aktualisiert – hawkeye

Verwandte Themen