2017-04-08 55 views
0

我跑我的搬運工容器:如何讓我的docker centos sshd無密碼服務器運行?

docker run -d sequenceiq/hadoop-docker:2.6.0 

Dockerfile is here

它在我的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問題的重複,因爲這是一個不同的分os版本。 (對於那些相似的人來說,它正在做這個潛在的類似問題,並且它不工作)。

我的問題是:如何讓我的docker centos sshd無密碼服務器運行?


編輯: @Andrew一直在幫助我改進我的問題的超級有用的 - 所以這裏去。

這裏是我的更新Dockerfile

FROM sequenceiq/Hadoop的搬運工: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 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 

我的問題是:如何讓我泊塢窗的CentOS的sshd密碼的服務器上運行?

回答

3

你試圖連接到你本地的SSH服務器,而不是容器。要連接到容器內的任何端口,您需要公開併發布它,並可能將其映射到另一個端口,特別是當您希望在同一主機的不同端口上運行多個相似容器時。請參閱Expose

所以你的情況你的命令應該是

docker run -p 2222:22 -d sequenceiq/hadoop-docker:2.6.0 

和SSH命令

ssh -v localhost -p 2222 

揭露泊塢窗口(如被看見在你的鏈接泊塢窗文件)可以對其進行訪問 到其他碼頭工人的容器,但不是你的主機。要了解暴露和出版端口之間的差別看this question

然而,當我試圖連接到端口2222它都沒有奏效。看看2.6.0版本的Dockerfile,我發現它有一個bug,其中sshd配置爲偵聽端口2122,但暴露的端口是22,可以看到here。另外,當我試圖構建你提供的最新的Dockerfile時,它在步驟31失敗了,所以你可能想要進一步反思。問題更新後

編輯:

看你提供的搬運工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上收聽

+0

謝謝 - 這是超級有用的 - 我已根據您的反饋更新了問題 – hawkeye

相關問題