很多時候,系統管理員都習慣通過 ssh 服務來遠端登入管理伺服器,但是 docker 的很多映象是不帶 ssh 服務的,那麼使用者怎樣才能管理容器呢?
之前介紹了一些進入容器的辦法, 比如用 attach 、 exec 等命令,但是這些命令都無法解決遠端管理容器的問題。 因此,當讀者需要遠端登入到容器內進行一些操作的時候,就需要 ssh 的支援了 。
本文將具體介紹如何自行建立乙個帶有 ssh 服務的映象,並詳細介紹了兩種建立容器的方法:基於 docker commit 命令建立和基於 dockerfile 建立。
docker 提供了 docker commit 命令 , 支援使用者提交自己對制定容器的修改,並生成新的映象。 命令格式為 docker commit container [repository [ :tag ]] 。 這裡筆者將介紹如何用 docker commit 命令為centos:latest映象新增 ssh 服務 。
[root@docker ~]# docker run -it centos:latest
[root@963ec5346096 /]# yum -y install openssh-server
[root@963ec5346096 /]# ssh-keygen -a
[root@963ec5346096 /]# ls /etc/ssh/
moduli ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_ecdsa_key ssh_host_ecdsa_key.pub ssh_host_ed25519_key ssh_host_ed25519_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub sshd_config
[root@963ec5346096 /]# yum -y install passwd
[root@963ec5346096 /]# echo 123456 | passwd --stdin root
在容器內建立run.s**件,並新增執行許可權,chmod +x run.sh
#!/bin/bash
/usr/sbin/sshd -d
docker commit 963ec5346096 centos:sshd6:將容器製作為映象
docker run -d centos:sshd6 /run.sh:執行sshd映象
ssh root@ip :ssh容器ip遠端登入
from centos:latest #基礎映象
maintainer yulei #作者
run yum install -y openssh-server #安裝ssh軟體包
run 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
run yum -y install passwd #安裝修改密碼公具
run echo "123456" | passwd --stdin root #修改root密碼
copy run.sh /run.sh #拷貝當前位置的run.sh指令碼到容器內
run chmod 755 /run.sh #修改run.s**件的勸降
expose 22 #宣告埠,並不會暴露
cmd ["/run.sh"] #執行docker命令時執行的預設命令(執行指令碼檔案,啟動sshd服務)
docker build -t centos:sshd7 . :構建映象
docker run -d centos:sshd7 /run.sh:執行sshd映象
ssh root@ip :ssh容器ip遠端登入
Docker為映象新增SSH服務
很多時候使用者希望通過遠端登入伺服器來進行管理,但是docker的很多映象都不支援ssh服務,接下來將會介紹為docker映象新增ssh服務的兩種方法 1.基於commit命令的建立 通過對容器進行ssh的配置,生成乙個新的映象。首先獲取ubuntu 18.04的映象,之後建立乙個名叫ssh的容器 ...
dokcer映象新增ssh服務
說明 為映象新增ssh服務其實就是乙個構建新映象的過程,主要喲兩種方式,一種是基於commit命令,用來儲存當前容器狀態的映象,另一種是基於dockerfile,通過配置檔案,由底層映象搭建。這裡主要通過為映象新增ssh服務的過程來熟悉映象搭建過程。如果沒有ssh服務,需要從宿主機attach或者e...
建立支援SSH服務的映象
上圖中,我們首先檢視當前系統中有哪些映象,可以看到我們有乙個ubuntu latest的映象,我們使用該映象來建立乙個容器。docker run it ubuntu latest bin bash,這個命令相當於create 並且 run起這個容器,這樣我們就進入了這個建立好容器的bash中 在ba...