我的容器有以下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”它就不显示。
答案 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/
希望这会有所帮助。