docker基於commit命令創建支持ssh服務的鏡像


以centos為基礎,目的使用ssh服務遠程連接docker容器。

環境:宿主機centos7(宿主機ip地址為192.168.164.130),直接搜索docker的centos鏡像,下載最新版本。

[root@localhost ~]# docker search -s 15 centos

 

[root@localhost ~]# docker pull docker.io/centos

使用centos鏡像啟動一個容器centos_ssh

[root@localhost ~]# docker run -it --name=centos_ssh centos /bin/bash

進入容器之后,升級並安裝ssh組件,命令如下:

[root@ fdb751de5762 ~]# yum -y update

[root@ fdb751de5762 ~]# yum -y install openssh-server

[root@ fdb751de5762 ~]# vi /etc/ssh/sshd_config

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

在宿主機中生成密鑰對,把生成的公鑰文件中的內容復制到容器的/root/.ssh/authorized_keys里,如果無對應目錄則手動創建。

[root@localhost ~]# ssh-keygen -t rsa

[root@localhost ~]# cat /root/.ssh/id_rsa.pub

 

進入centos_ssh容器

[root@ fdb751de5762 ~]# mkdir .ssh

[root@ fdb751de5762 ~]# cd .ssh

[root@ fdb751de5762 .ssh]# vi authorized_keys

[root@ fdb751de5762 .ssh]# cat authorized_keys

 

設置容器root密碼

[root@ fdb751de5762 ~]# echo "root:123456"|chpasswd

創建 /var/run/sshd/目錄,要不然sshd服務啟動會報錯
[root@ fdb751de5762 ~]# mkdir /var/run/sshd/

[root@ fdb751de5762 ~]# /usr/sbin/sshd -D &

WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several problems.(1)
Could not load host key: /etc/ssh/ssh_host_rsa_key(2)

Could not load host key: /etc/ssh/ssh_host_ecdsa_key

Could not load host key: /etc/ssh/ssh_host_ed25519_key

啟動時會提示以上信息,(1)表示:修改了sshd_conf文件中的UsePAM yes改成UsePAM no

(2)表示:沒有主機的公私秘鑰,重新生成密鑰

[root@fdb751de5762 ~]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

[root@fdb751de5762 ~]# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key

[root@fdb751de5762 ~]# ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key

[root@fdb751de5762 ~]# /usr/sbin/sshd -D &

 

[root@fdb751de5762 ~]# ps -ef | grep sshd

root          1      0  0 22:16 ?        00:00:00 /usr/sbin/sshd -D

root         33      7  0 22:37 pts/0    00:00:00 grep --color=auto sshd

[root@fdb751de5762 ~]# yum -y install lsof

[root@fdb751de5762 ~]# lsof -i:22

 

[root@ fdb751de5762 ~]# vi run.sh

#/bin/bash

/usr/sbin/sshd -D &

[root@fdb751de5762 ~]# chmod 755 run.sh

[root@fdb751de5762 ~]# exit

 

在宿主機中使用commit命令將centos_ssh創建為sshd_centos鏡像

[root@localhost ~]# docker commit fdb751de5762 sshd_centos

 

運行該鏡像並啟動sshd服務

[root@localhost ~]# docker run -p 10022:22 -d sshd_centos /usr/sbin/sshd –D

[root@localhost ~]# docker ps

 

說明:10022是宿主機的和容器的通訊端口,外面窗口(局域網)通過訪問地址

ssh root@宿主機IP -p 10022(IP和端口之間有空格,不是:)就能進入容器,如果沒有設置ssh免密登錄,則輸入剛才為容器的root用戶設定的密碼。

[root@localhost ~]# ssh root@192.168.134.130 -p 10022

 

如上所示,成功進入容器。

如果碰見下述錯誤

 

則可以執行下述指令#mv /root/.ssh/known_hosts /tmp

 


免責聲明!

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



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