Docker SSH服务器连接被拒绝

时间:2016-07-25 12:49:15

标签: ssh docker containers openssh

我的容器有以下Dockerfile:

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

然而,当我构建并运行它时,它表示连接被拒绝。我尝试了几乎所有我能找到的解决方案,包括“ufw allow”,它不起作用,因为它告诉我我需要root(我怎么能为Dockerfile做到这一点?)。

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

ssh <someUsername?>@containerIP

PS:我知道还有其他方法可以连接到Docker容器,但我需要使用SSH,因此不能选择附加等。

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

2 个答案:

答案 0 :(得分:2)

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

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

在Docker Hub上已经为此构建了相当多的图像,包括https://hub.docker.com/r/trsouz/ssh/https://hub.docker.com/r/rastasheep/ubuntu-sshd/

答案 1 :(得分:0)

在您的docker文件中,您只是安装openssh-server并希望它能够正常工作。要使ssh工作,您基本上需要添加用户,创建密码,编写sshd规则并公开服务。如果你这么做,你可以ssh到你的docker容器。

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

希望这会有所帮助。