Docker SSH 服务器连接被拒绝

Docker SSH Server Connection Refused

我的容器有以下 Docker 文件:

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(我如何为 Docker 文件做到这一点?)。

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

ssh <someUsername?>@containerIP

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

编辑:这似乎是因为 sshd 不是 运行ning,因为如果我 运行 "ps -A" 它不会显示。

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

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

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

在您的 docker 文件中,您只安装了 openssh-server 并期望它能正常工作。要使 ssh 工作,您基本上需要添加用户、创建密码、编写 sshd 规则并公开服务。如果你完成了所有这些,你就可以通过 ssh 连接到你的 docker 容器。

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

希望这会有所帮助。