我有一个奇怪的问题。
我无法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/