Docker SSH服务器连接被拒绝

我有我的容器下面的Dockerfile:

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

但是,当我build立和运行它时,它说连接被拒绝。 我尝试了几乎所有我能find的解决scheme,包括“ufw allow”,这不能正常工作,因为它告诉我需要成为根(我怎么能为Dockerfile做这件事?)。

我需要以这种方式访问​​容器:

 ssh <someUsername?>@containerIP 

PS:我知道有其他的方式来连接到一个Docker容器,但我需要使用SSH,所以附加等是不是一个选项。

编辑:这似乎是因为sshd没有运行,因为它不显示,如果我运行“ps -A”。

Docker容器隔离一个应用程序或命令,在你的情况下,他们正在隔离命令tail -f /dev/null ,这将保持容器运行,但没有做任何有用的事情。 如果你想运行一个sshd服务器,你需要启动它作为你的前台命令:

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

在Docker Hub上已经为此创build了不less图片,其中包括https://hub.docker.com/r/trsouz/ssh/和https://hub.docker.com/r/rastasheep/ubuntu-sshd/

在你的docker文件中,你只是安装openssh-server并期待它的工作。 要使ssh工作,基本上需要添加用户,创build密码,编写sshd规则并公开服务。 如果你这样做,你可以ssh到你的docker集装箱。

这里是参考。 https://docs.docker.com/engine/examples/running_ssh_service/

希望这会有所帮助。