Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让docker centos sshd无密码服务器运行?_Docker_Ssh_Centos_Sshd - Fatal编程技术网

如何让docker centos sshd无密码服务器运行?

如何让docker centos sshd无密码服务器运行?,docker,ssh,centos,sshd,Docker,Ssh,Centos,Sshd,我正在使用以下内容运行docker容器: docker run -d sequenceiq/hadoop-docker:2.6.0 这个 在我的mac电脑上启动后-我正在运行docker ps并获得: 6bfa4f2fd3b5 sequenceiq/hadoop-docker:2.6.0 "/etc/bootstrap.sh -d" 4 minutes ago Up 4 minutes 22/tcp, 8030-8033/tcp, 8040/tc

我正在使用以下内容运行docker容器:

docker run -d sequenceiq/hadoop-docker:2.6.0
这个

在我的mac电脑上启动后-我正在运行
docker ps
并获得:

6bfa4f2fd3b5        sequenceiq/hadoop-docker:2.6.0   "/etc/bootstrap.sh -d"   4 minutes ago       Up 4 minutes        22/tcp, 8030-8033/tcp, 8040/tcp, 8042/tcp, 8088/tcp, 49707/tcp, 50010/tcp, 50020/tcp, 50070/tcp, 50075/tcp, 50090/tcp   kind_hawking
那我就跑

ssh -v localhost -p 22
我越来越

OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /Users/User/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to localhost [::1] port 22.
debug1: connect to address ::1 port 22: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: connect to address 127.0.0.1 port 22: Connection refused
ssh: connect to host localhost port 22: Connection refused
假设:我认为这不是其他centos sshd问题的重复,因为这是不同的centos版本。(对于那些相似的——它正在做潜在相似问题所要求的事情,但它不起作用)

我的问题是:如何让docker centos sshd无密码服务器运行?


编辑: @Andrew帮了我很大的忙,帮我完善了我的问题——现在开始

这是我更新的
Dockerfile

来自sequenceiq/hadoop docker:2.6.0

CMD ["/etc/bootstrap.sh", "-d"]

# Hdfs ports
EXPOSE 50010 50020 50070 50075 50090 8020 9000
# Mapred ports
EXPOSE 10020 19888
#Yarn ports
EXPOSE 8030 8031 8032 8033 8040 8042 8088
#Other ports
EXPOSE 49707 2122

EXPOSE 9000

EXPOSE 2022
现在,我正在通过以下方式构建此功能:

 sudo docker build -t my-hdfs .
sudo docker run -d -p my-hdfs 
然后,我将使用以下工具运行此操作:

 sudo docker build -t my-hdfs .
sudo docker run -d -p my-hdfs 
然后,我用以下方法检查流程:

sudo docker ps
其结果如下:

d9c9855cfaf0        my-hdfs             "/etc/bootstrap.sh -d"   2 minutes ago       
Up 2 minutes        0.0.0.0:32801->22/tcp, 0.0.0.0:32800->2022/tcp, 
0.0.0.0:32799->2122/tcp, 0.0.0.0:32798->8020/tcp, 0.0.0.0:32797->8030/tcp, 
0.0.0.0:32796->8031/tcp, 0.0.0.0:32795->8032/tcp, 0.0.0.0:32794->8033/tcp, 
0.0.0.0:32793->8040/tcp, 0.0.0.0:32792->8042/tcp, 0.0.0.0:32791->8088/tcp, 
0.0.0.0:32790->9000/tcp, 0.0.0.0:32789->10020/tcp, 0.0.0.0:32788->19888/tcp, 
0.0.0.0:32787->49707/tcp, 0.0.0.0:32786->50010/tcp, 0.0.0.0:32785->50020/tcp, 
0.0.0.0:32784->50070/tcp, 0.0.0.0:32783->50075/tcp, 0.0.0.0:32782->50090/tcp   
agitated_curran
然后要获取我正在运行的IP地址:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' d9c9855cfaf0
结果是

172.17.0.3
然后我用以下方法进行测试:

ssh -v 172.17.0.3 -p 32800
这就产生了一个结果:

OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /Users/User/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to 172.17.0.3 [172.17.0.3] port 32800.

debug1: connect to address 172.17.0.3 port 32800: Operation timed out
ssh: connect to host 172.17.0.3 port 32800: Operation timed out

我的问题是:如何让docker centos sshd无密码服务器运行?

您正在尝试连接到本地ssh服务器,而不是容器。要连接到容器内的任何端口,您需要公开和发布它,并可能将其映射到另一个端口,特别是当您希望在同一主机上的不同端口上运行多个类似容器时。看

所以在你的情况下,你的命令应该是

docker run -p 2222:22 -d sequenceiq/hadoop-docker:2.6.0 
和ssh命令

ssh -v localhost -p 2222
公开docker端口(如链接的docker文件中所示)可以访问该端口 到其他docker容器,但不到主机。要了解公开端口和发布端口之间的差异,请参阅

然而,当我尝试连接到端口2222时,它没有工作。查看2.6.0版本的Dockerfile,我发现它有一个bug,其中sshd配置为侦听端口2122,但暴露的端口是22,如图所示。另外,当我试图构建您提供的最新Dockerfile时,它在步骤31失败,所以您可能需要进一步研究

问题更新后编辑:

查看您提供的docker ps输出和Dockerfile。sshd配置为在端口2122上侦听(如果您没有更改,因为我们没有您的完整dockerfile),并且在输出中可以看到

0.0.0.0:32799->2122/tcp
0.0.0.0:32800->2022/tcp

您应该以ssh-v localhost-p 32799而不是32800的身份连接,因为容器中的端口2022上没有任何内容正在侦听,您正在尝试连接到本地ssh服务器而不是容器。要连接到容器内的任何端口,您需要公开和发布它,并可能将其映射到另一个端口,特别是当您希望在同一主机上的不同端口上运行多个类似容器时。看

所以在你的情况下,你的命令应该是

docker run -p 2222:22 -d sequenceiq/hadoop-docker:2.6.0 
和ssh命令

ssh -v localhost -p 2222
公开docker端口(如链接的docker文件中所示)可以访问该端口 到其他docker容器,但不到主机。要了解公开端口和发布端口之间的差异,请参阅

然而,当我尝试连接到端口2222时,它没有工作。查看2.6.0版本的Dockerfile,我发现它有一个bug,其中sshd配置为侦听端口2122,但暴露的端口是22,如图所示。另外,当我试图构建您提供的最新Dockerfile时,它在步骤31失败,所以您可能需要进一步研究

问题更新后编辑:

查看您提供的docker ps输出和Dockerfile。sshd配置为在端口2122上侦听(如果您没有更改,因为我们没有您的完整dockerfile),并且在输出中可以看到

0.0.0.0:32799->2122/tcp
0.0.0.0:32800->2022/tcp

您应该以
ssh-v localhost-p 32799而不是32800进行连接,因为容器内的端口2022上没有任何内容正在侦听

谢谢-非常有用-我根据您的反馈更新了问题谢谢-非常有用-我根据您的反馈更新了问题