很多時候使用者希望通過遠端登入伺服器來進行管理,但是docker的很多映象都不支援ssh服務,接下來將會介紹為docker映象新增ssh服務的兩種方法:
1. 基於commit命令的建立
通過對容器進行ssh的配置,生成乙個新的映象。
首先獲取ubuntu:18.04的映象,之後建立乙個名叫ssh的容器
docker pull ubuntu:18.04
docker run -it --name ssh ubuntu:18.04 bash
可能會出現如下的錯誤
error:warning: ipv4 forwarding is disabled. networking will not work.使用解決方法: vim /usr/lib/sysctl.d/00* 新增(本地檔案)
net.ipv4.ip_forward=1,刪除容器,重啟網路(systemctl restart network),
重新建立容器
apt-get update
更新軟體源。
deb bionic main restricted universe multiverse
deb bionic-security main restricted universe multiverse
deb bionic-updates main restricted universe multiverse
deb bionic-proposed main restricted universe multiverse
deb bionic-backports main restricted universe multiverse
deb-src bionic main restricted universe multiverse
deb-src bionic-security main restricted universe multiverse
deb-src bionic-updates main restricted universe multiverse
deb-src bionic-proposed main restricted universe multiverse
deb-src bionic-backports main restricted universe multiverse
之後選擇主流的openssh-server作為服務端。
apt-get install opessh-server
如果需要正常啟動ssh,則容器內必須要有/var/run/sshd的目錄
mkdir -p /var/run/sshd
/usr/sbin/sshd -d & (啟動ssh服務)
ssh預設監聽的埠為22,此時使用以下命令檢視埠狀態
修改ssh服務的安全登入配置,取消pam
sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
在root使用者下建立.ssh目錄 。在其中建立authorized_keys檔案
mkdir -p root/.ssh
vi /root/.ssh/authorized_keys
該檔案內容一般為本地主機使用者資料夾下的~/.ssh/id_rsa.pub的內容,如果主機中沒有這個資料夾,得root命令來生成秘鑰,並放至該檔案中。2.基於docker命令的建立首先建立乙個工作目錄 mkdir sshd_ubuntu此時配置ssh基本完成,此時需要建立自動啟動ssh的檔案run.sh,並新增可執行許可權
vi /run.sh
chmod +x run.sh
檔案內容如下:
#!/bin/bash
/usr/sbin/sshd -d
之後退出容器,提交該容器為映象即可
docker commit
之後在該目錄中建立run.sh(與上面run.sh內容一致) , dockerfile。
ssh-keygen -t rsa
生成秘鑰,一般生成檔案在~/.ss**件下,
cat ~/.ssh/id_rsa.pub >authorized_keys
生成乙個authorized_keys檔案
dockerfile:
#繼承映象
from ubuntu:18.04
#提供作者資訊
maintainer docker_user ([email protected])
#更新軟體源
run apt-get update
#安裝ssh
run apt-get install -y openssh-server
run mkdir -p /var/run/sshd
run mkdir -p /root/.ssh
#取消pam登入
run sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#複製 ~/.ssh/authorized_keys,並賦予執行許可權
add authorized_keys /root/.ssh/authorized_keys
add run.sh /run.sh
run chmod 755 /run.sh
#開啟ssh埠
expose 22
#設定自啟命令
cmd ["/run.sh"]
最後,使用docker build 命令建立即可。
3.使用映象
前面教會了你怎樣去為映象配置ssh服務,接下來的內容將會帶你去使用帶有ssh服務的映象。
首先使用之前commit的映象建立乙個容器:
docker run -p 10022:22 -d --name ssh1 /run.sh
-d: 讓容器在後台執行
-p:主機與容器埠的對映,ssh的預設埠為22
之後就可以使用在宿主主機訪問10022埠來登入該容器,
寫作不易,關注一下唄xiaolian☺
七 為映象新增 SSH 服務
很多時候,系統管理員都習慣通過 ssh 服務來遠端登入管理伺服器,但是 docker 的很多映象是不帶 ssh 服務的,那麼使用者怎樣才能管理容器呢?之前介紹了一些進入容器的辦法,比如用 attach exec 等命令,但是這些命令都無法解決遠端管理容器的問題。因此,當讀者需要遠端登入到容器內進行一...
Docker學習筆記 3 為映象新增標籤
3.為映象新增標籤 a.標籤內容 i.映象名的末尾 1 版本號 2 版本名 3 latest ii.映象名的前面 1 registry名和埠 2 使用者名稱 b.為映象分配名稱 i.構建映象 docker build t 映象名 1 從頭構建映象,即從dockerfile構建映象,並為其分配乙個名字...
dokcer映象新增ssh服務
說明 為映象新增ssh服務其實就是乙個構建新映象的過程,主要喲兩種方式,一種是基於commit命令,用來儲存當前容器狀態的映象,另一種是基於dockerfile,通過配置檔案,由底層映象搭建。這裡主要通過為映象新增ssh服務的過程來熟悉映象搭建過程。如果沒有ssh服務,需要從宿主機attach或者e...