Centos7創建支持ssh服務的docker鏡像


如何在centos7中使用docker創建一個支持ssh連接的容器

1.拉取centos7.4鏡像(由於7.4目前是最穩定的版本,所以推薦使用centos7.4)

docker pull centos:7.4.1708

2.執行以下命令查看已有的鏡像

docker images

3、基於centos鏡像,創建一個名為centos7ssh的容器並進入容器(這里名稱可以自定義)

docker run -it --name centos7ssh centos:7.4.1708 /bin/bash

4、進入容器后,安裝ssh服務端和客戶端,服務端能讓其他主機遠程登錄本機,客戶端能讓本機遠程登錄其他主機

yum -y install passwd openssl openssh-server openssh-clients

5.創建 /var/run/sshd/目錄,要不然sshd服務啟動會報錯

mkdir /var/run/sshd/

6.編輯sshd的配置文件/etc/ssh/sshd_config,將其中的UsePAM yes改為UsePAM no

可以進入sshd_config文件中去修改,也可以使用命令:

sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

7.創建公私密鑰,輸入命令后,直接按兩次enter鍵確認就行了

ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

8.完成上述幾步后,可以開啟ssh服務了(&表示后台啟動)

/usr/sbin/sshd -D &

9.此時使用命令ps -ef | grep sshd  便可以看到

10.查詢22端口是否處於監聽狀態

yum -y install lsof
lsof -i:22

11.修改root密碼

passwd

12.測試

輸入命令ssh localhost,然后輸入之前設置的root密碼

上圖中可以看到已經登錄到本機了,也就說容器中的主機擁有了ssh遠程登錄其它主機的能力,當然你也可以登錄其他主機。

要退出的話,輸入命令exit即可

13.如何配置外部客戶端訪問docker里的centos7.4容器

獲取容器的ID等端口映射信息

docker ps -a

提交容器成為新的鏡像,例如叫做sshd_centos7.4,輸入

docker commit 容器ID sshd_centos7.4

啟動這個鏡像的容器,並映射本地的一個閑置的端口(例如15000)到容器的22端口,並啟動容器的sshd(只要端口不沖突可以同時啟動多個容器,如下圖)

docker run -d -p 15000:22 sshd_centos7.4 /usr/sbin/sshd -D

現在打開新的終端,輸入ssh root@宿主機IP地址 -p 15000,如果能連接成功,會要求輸入密碼的,輸入剛才passwd命令設置的root賬戶密碼就可以進入容器的終端了

如果連接失敗,請檢查防火牆是否未開放該端口。 

 

參考文檔:https://www.cnblogs.com/whutxldwhj/p/6427530.html

https://blog.csdn.net/u013140345/article/details/79777311

https://blog.csdn.net/weipeng19861130/article/details/79006555

 

以下為網友提供的方法還未驗證是否可用,可自行驗證

docker pull centos:7.2.1511    //也可以不指定版本,默認最新latest
docker run -t -i centos:7.2.1511 /bin/bash  //啟動並進入docker 容器

yum install wget                    
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  
yum cleal all
yum install passwd
yum install openssh-server        #安裝ssh服務端
echo 'passw0rd' | passwd root    //修改root密碼

docker commit [容器ID] [新鏡像名]   //使用commit 提交,簡單的配置可以使用dockerfile創建鏡像,但是要配置環境比較復雜,還是需要用到commit
docker run -d -p 220:22 c7ssh /usr/sbin/sshd -D      //啟動容器,並綁定容器端口22到宿主主機, 可以有多個-p 綁定多個端口,例如22端口讓遠程客戶端連接,8080 可以訪問容器內tomcat


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM