天天看點

Docker-為鏡像添加SSH服務

進入容器的辦法有很多,包括exec、attach等指令,但是這些指令都無法解決遠端管理容器的問題,是以,需要SSH的支援

基于commit指令建立

docker提供了docker commit指令,支援使用者送出自己對指定容器的修改,并生成新的鏡像。指令格式為docker commit CONTAINER [REPOSITORY[:TAG]]

Centos6開啟SSH服務

啟動容器

FengZhen$ docker run -it --name centos6 centos:6 /bin/bash      

-t選項讓docker配置設定一個僞終端并綁定到容器的标準輸入上,-i則讓容器的标準輸入保持打開

當利用 docker run 來建立容器時,Docker 在背景運作的标準操作包括: 


(1)檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載下傳 


(2)利用鏡像建立并啟動一個容器 


(3)配置設定一個檔案系統,并在隻讀的鏡像層外面挂載一層可讀寫層 


(4)從宿主主機配置的網橋接口中橋接一個虛拟接口到容器中去 


(5)從位址池配置一個 ip 位址給容器 


(6)執行使用者指定的應用程式 


(7)執行完畢後容器被終止

檢視centos版本資訊

[root@ee8961b00872 /]# cat /etc/redhat-release 
CentOS release 6.9 (Final)      

修改root密碼

使用passwd來修改密碼(如果沒有這個指令,使用yum install passwd安裝)

[root@ee8961b00872 /]# passwd
Changing password for user root.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.      

安裝Openssh

使用下面的指令安裝ssh server / ssh client

[root@ac1a6c198331 /]# yum -y install openssh-server
[root@ac1a6c198331 /]# yum -y install openssh-clients      

修改SSH配置檔案以下選項,去掉#注釋,将四個選項啟動

[root@ac1a6c198331 /]# vi /etc/ssh/sshd_config
RSAAuthentication yes #啟用 RSA 認證
PubkeyAuthentication yes #啟用公鑰私鑰配對認證方式
AuthorizedKeysFile .ssh/authorized_keys #公鑰檔案路徑(和上面生成的檔案同)
PermitRootLogin yes #root能使用ssh登入      

重新開機SSH服務,并設定開機啟動

[root@ee8961b00872 /]# service sshd restart
Stopping sshd: [FAILED]
Generating SSH2 RSA host key: [ OK ]
Generating SSH1 RSA host key: [ OK ]
Generating SSH2 DSA host key: [ OK ]
Starting sshd: [ OK ]

[root@ee8961b00872 /]# chkconfig sshd on      

退出容器并儲存更改

exit

現在容器已經改變了,使用docker commit 指令來送出更新後的副本

FengZhen$ docker commit -m 'install openssh' -a 'Docker FZ' ee8961b00872 centos6:ssh
sha256:c524261c526e33f69c88137c40cd3b37b47fe28456e18829f17c10172c37a8cc      

啟動新的容器并打通22端口

FengZhen$ docker run -d -p 50001:22 centos6:ssh /usr/sbin/sshd -D
b32b35215f14fd97ccee644a2aacd36027db975001d8e58fe332c7f52f7cf2f2      
FengZhen$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b32b35215f14 centos6:ssh "/usr/sbin/sshd -D" 8 minutes ago Up 8 minutes 0.0.0.0:50001->22/tcp      

ssh連接配接容器

FengZhen$ ssh root@localhost -p 50001
The authenticity of host '[localhost]:50001 ([::1]:50001)' can't be established.
RSA key fingerprint is SHA256:qvyvwqtXimyC+lN1fiLENbpgdjgO9tvCT89hs/DUhBY.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:50001' (RSA) to the list of known hosts.
root@localhost's password: 
[root@b32b35215f14 ~]#      

繼續閱讀