如何让我的docker centos sshd无密码服务器运行?
我正在运行我的docker容器:
docker run -d sequenceiq/hadoop-docker:2.6.0
Dockerfile在这里 。
在我的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
FROM 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
现在我正在build立这个:
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
然后我正在testing它:
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,其中sshdconfiguration为侦听端口2122,但暴露的端口是22,如在这里可以看到。 另外,当我试图build立一个你提供的最新的Dockerfile,它在第31步失败,所以你可能想进一步反思。
问题更新后编辑:
查看您提供的docker ps输出,以及Dockerfile。 sshdconfiguration为侦听端口2122(如果你还没有改变,虽然因为我们没有一个完整的docker文件),在输出中,我们看到
0.0.0.0:32799->2122/tcp 0.0.0.0:32800->2022/tcp
你应该连接为ssh -v localhost -p 32799
而不是ssh -v localhost -p 32799
,因为没有任何内容在端口2022上监听
- 更新泊坞窗图像给予本地文件系统的变化
- Kubernetes / Spring云数据streamstream> spring.cloud.stream.bindings.output.destination被生产者忽略
- docker安装卷与权限被拒绝
- Docker – 如何构build一个nodejs docker镜像`FROM centos:7.2.1511` docker image
- docker图像的操作系统名称
- Vagrant如何在CentOS上自动安装Docker?
- Docker在CentOS 7.2上:kernel:unregister_netdevice:等待lo成为免费的。 使用次数= 1
- 由于CentOS6上的GMP包版本,Ansible错误
- 如何使我的docker在指定的Linux内核版本上运行?
- docker上的AEM 6.0 – Dbus连接错误
- 如何告诉Docker使用dm / LVM后端而不是vfs