docker - openssh-server无法在Docker容器中启动

标签 docker openssh dockerfile

我有一个奇怪的问题。

我无法SSH到具有IP地址172.17.0.61的docker容器。

我收到以下错误:

$ ssh 172.17.0.61
ssh: connect to host 172.17.0.61 port 22: Connection refused

我的Dockerfile确实包含openssh-server安装步骤:
RUN apt-get -y install curl runit openssh-server

并且还需要启动ssh:
RUN service ssh start

可能是什么问题?

当我使用 nsenter 进入容器并启动ssh服务时,便可以使用ssh了。但是在创建容器ssh-server时似乎没有开始。

我该怎么办?

最佳答案

构建Dockerfile时,您将创建一个镜像。但是您不能使用已经运行的ssh守护程序或其他正在运行的服务来创建镜像。首先,如果您根据镜像创建一个正在运行的容器,则可以在其中启动服务。例如。通过将开始指令附加到docker run命令:

sudo docker run -d mysshserver service ssh start

您可以使用CMD为您的Docker镜像定义默认命令。这是一个示例Dockerfile:
FROM ubuntu:14.04.1
MAINTAINER Thomas Steinbach
EXPOSE 22
RUN apt-get install -y openssh-server
CMD service ssh start && while true; do sleep 3000; done

您可以使用以下两个命令来构建运行该镜像:
sudo docker build -t sshtest .
sudo docker run -d -P --name ssht sshtest

现在,您可以通过ssh连接到此容器。请注意,在示例Dockerfile中,没有用户且未创建登录名。该图像仅作为示例,您可以与其建立ssh连接,但不能登录。

关于docker - openssh-server无法在Docker容器中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27860506/

相关文章:

git - 通过带有 SSL bump 的 Squid 使用 SSH 连接到 Git

ssh - cygwin 中的连接被::1 错误关闭

php - PHP-FPM不会从Dockerfile开始

Docker 构建错误 OCI 运行时创建失败 "exec:\"/bin/bash\": stat/bin/bash

html - 外部 css 在本地主机上工作正常但在远程服务器上不工作

docker - docker 容器中的hangfire 无法正常工作黑屏访问仪表板 url

reactjs - 使用 docker-compose 对 React 应用程序进行 Dockerize

python - 将 bcrypt 添加到 package.json 时,如何使用 docker node alpine Image 解决 "Could not find any Python installation to use"?

Docker,如何从命令行主机远程 ssh 到 docker 容器?

azure - 文件不在 docker workdir azure web 应用程序中