2016-12-14 92 views
0

我在我的ubuntu機器上安裝了Docker鏡像 - centos 7。但沒有找到ssh服務。所以我無法運行這項服務。docker image - centos 7> ssh service not found

[[email protected] /]# yum install openssh-server openssh-clients 
Loaded plugins: fastestmirror, ovl 
Loading mirror speeds from cached hostfile 
* base: mirror.dhakacom.com 
* extras: mirror.dhakacom.com 
* updates: mirror.dhakacom.com 
Package openssh-server-6.6.1p1-31.el7.x86_64 already installed and latest version 

Package openssh-clients-6.6.1p1-31.el7.x86_64 already installed and latest version 
Nothing to do 
[[email protected] /]# ss    
ssh   ssh-agent ssh-keygen sshd   ssltap  
ssh-add  ssh-copy-id ssh-keyscan sshd-keygen 

我該如何遠程登錄docker鏡像?

+0

'sshd'在那裏,但爲什麼你需要ssh到你的容器? – Matt

+0

我知道sshd在那裏。但沒有找到與該服務相關的任何內容。我想遠程登錄碼頭容器來運行一個 –

+0

通常,試圖[ssh到一個容器是一個容器反模式](https://blog.docker.com/2014/06/why-you-dont-need-to -run-sshd的功能於搬運工/)。如果你在一個容器中做了一件容易的事情,它可以在圖像構建過程中完成嗎?你可以通過[docker連接插件](https://github.com/ansible/ansible/pull/11650)來做到嗎? – Matt

回答

2

您必須對Dockerfile執行以下指示。

RUN yum install -y sudo wget telnet openssh-server vim git ncurses-term 
RUN useradd your_account 

RUN mkdir -p /home/your_account/.ssh && chown -R your_account /home/your_account/.ssh/ 

# Create known_hosts 
RUN touch /home/your_account/.ssh/known_hosts 


COPY files/authorized_keys /home/your_account/.ssh/ 
COPY files/config   /home/your_account/.ssh/ 
COPY files/pam.d/sshd  /etc/pam.d/sshd 
RUN touch /home/your_account/.ssh/environment 
RUN chown -R your_account /home/your_account/.ssh 
RUN chmod 400 -R /home/your_account/.ssh/* 
RUN chmod 700 -R /home/your_account/.ssh/known_hosts 
RUN chmod 700 /home/your_account/.ssh/environment 


# Enable sshd 
COPY files/sshd_config /etc/ssh/ 
RUN ssh-keygen -f /etc/ssh/ssh_host_rsa_key -N '' -t rsa 

# Add a account into sudoers and this account doesn't need to type his password 
COPY files/sudoers /etc/ 
COPY files/start.sh /root/ 

我不得不刪除該文件上將/etc/pam.d/sshd「pam_nologin.so」,因爲當我升級的OpenSSH服務器的版本的OpenSSH服務器,6.6.1p1-31.el7, pam_nologin.so將不允許任何用戶進行遠程登錄,即使文件/ etc/nologin不存在。

start.sh

#!/bin/bash 
/usr/sbin/sshd -E /tmp/sshd.log 

開始的CentOS容器

  • 搬運工運行-d -t -p $(sshPort):22 --name $(容器名稱)$(imageName)/箱/ bash的
  • 泊塢窗EXEC -d $(容器名稱)慶典-c 「SH /root/start.sh」

登錄容器

  • SSH $(泊塢IP)$(sshPort)
1

在延伸到@puritys

你可以這樣做的,而不是Dockerfile

最後文件中:

ENTRYPOINT /usr/sbin/sshd -E /tmp/sshd.log && /bin/bash 

然後你只需要運行:

docker run -d -p -t $(sshPort):22 --name $(containerName) $(imageName) /bin/bash 
相關問題