2016-07-25 4 views
1

je le Dockerfile suivant pour mon conteneur:Docker serveur SSH Connection Refused

FROM ubuntu:latest 
RUN apt-get upgrade 
RUN apt-get update 
RUN apt-get -y install openssh-server 
CMD tail -f /dev/null 

Cependant, quand je construis et l'exécuter, il dit connexion refusée. J'ai essayé presque tout ce que je pouvais trouver pour des solutions, y compris "ufw allow" qui ne fonctionne pas car il me dit que je dois être root (comment puis-je faire cela pour un Dockerfile?).

J'ai besoin pour accéder au conteneur exactement de cette manière:

ssh <someUsername?>@containerIP 

PS: Je sais qu'il ya d'autres façons de se connecter à un conteneur Docker, mais je dois utiliser SSH afin joindre etc. ne sont pas une option.

EDIT: Il semble que ce soit parce que sshd n'est pas en cours d'exécution, car il ne s'affiche pas si je lance "ps -A".

Répondre

1

Les conteneurs Docker isolent une application ou une commande. Dans votre cas, ils isolent la commande tail -f /dev/null qui permet au conteneur de continuer à fonctionner, mais ne fait rien d'utile. Si vous voulez un serveur exécutant sshd, vous devez lancer que votre commande avant-plan:

CMD ["/usr/sbin/sshd", "-D"] 

Il y en a quelques images déjà construites à cet effet sur Docker Hub, y compris https://hub.docker.com/r/trsouz/ssh/ et https://hub.docker.com/r/rastasheep/ubuntu-sshd/.

-1

Dans votre fichier docker, vous installez uniquement openssh-server et vous vous attendez à ce qu'il fonctionne. Pour que ssh fonctionne, vous devez ajouter un utilisateur, créer un mot de passe, écrire des règles sshd et exposer le service. Si vous faites tout cela, vous pouvez ssh à votre conteneur docker.

Voici la référence. https://docs.docker.com/engine/examples/running_ssh_service/

Espérons que cela aidera.