說明:為映象新增ssh服務其實就是乙個構建新映象的過程,主要喲兩種方式,一種是基於commit命令,用來儲存當前容器狀態的映象,另一種是基於dockerfile,通過配置檔案,由底層映象搭建。這裡主要通過為映象新增ssh服務的過程來熟悉映象搭建過程。
如果沒有ssh服務,需要從宿主機attach或者exec方式進入容器,但這沒有辦法解決從遠端管理容器的方法。ssh可以通過遠端主機連線docker容器,而不用從宿主機登入到容器。ssh雖然方便,但有許多人認為背離了docker的初衷,docker本就為單個服務而生,而且沒有從遠端主機管理的必要。
雖然有點爭議,但好在ssh只占用 少量的資源,而且安全性***,now,讓我們擱置爭議,來康康如何 新增ssh服務吧!
1.獲取並執行乙個ubuntu:18.04映象
docker pull ubuntu:18.04或者直接執行run這一條命令也行,如果沒有映象則先拉取映象,然後執行容器docker run -it ubuntu:18.04 /bin/bash
-t 表示在新容器內指定乙個偽終端或終端2.剛執行的容器一般無法使用很多命令,需要安裝一些服務,但很多命令用不了,需要更新一下映象源才能使用。一般國外的源比較慢,要改成國內的源。-i 表示允許我們對容器內的 (stdin) 進行互動
-d 其它地方會出現這個表示在後台執行
為ubuntu更換阿里源,並更新
eof更新
apt-get update3.安裝配置ssh服務
apt-get install -y openssh-server建立/var/run/sshd目錄並啟動ssh服務
mkdir -p /var/run/sshd可以通過netstat -ntlp檢視ssh是否啟動監聽,如果沒有這個命令需要安裝一下/usr/run/sshd -d &
apt-get install -y net-tools取消pam登入限制,注釋掉有pam_loginuid.so這一行
vi /etc/pam.d/sshd4.建立自啟動ssh服務的可執行檔案/run.sh,並新增可執行許可權
vim /run.sh最後退出容器#!/bin/bash
#內容為
/usr/sbin/sshd -d
exit5.將退出的容器儲存為新的映象
docker ps -a檢視本地新生成的映象sshd:ubuntu#命名為sshd並新增ubuntu標籤
docker commit id sshd:ubuntu
docker images sshd:ubuntu6.啟動容器,並新增埠對映
將宿主機的10022埠對映給容器的22埠
docker run -p 10022:22 -d sshd:ubuntu /run.sh檢視埠對映
docker container port ida6是容器id的前幾位,不用寫全也可以
解釋:
-p(小寫):指定對映埠檢視容器運**況-d: 後台執行
/run.sh 執行指令碼
docker ps7.宿主機root使用者生成ssh金鑰對,通過訪問宿主機埠對映來訪問容器
ssh-keygen -t rsa然後將/root/.ssh/authorized_keys複製到需要登入容器的主機內
在宿主機或其它能訪問宿主機的機器上訪問容器
好了,現在可以從遠端主機訪問容器了
爭議!啥爭議?
真香。。。
後面會再介紹通過dockerfile方式為映象新增ssh服務。
好了,沒什麼事情就退朝吧。
Docker為映象新增SSH服務
很多時候使用者希望通過遠端登入伺服器來進行管理,但是docker的很多映象都不支援ssh服務,接下來將會介紹為docker映象新增ssh服務的兩種方法 1.基於commit命令的建立 通過對容器進行ssh的配置,生成乙個新的映象。首先獲取ubuntu 18.04的映象,之後建立乙個名叫ssh的容器 ...
七 為映象新增 SSH 服務
很多時候,系統管理員都習慣通過 ssh 服務來遠端登入管理伺服器,但是 docker 的很多映象是不帶 ssh 服務的,那麼使用者怎樣才能管理容器呢?之前介紹了一些進入容器的辦法,比如用 attach exec 等命令,但是這些命令都無法解決遠端管理容器的問題。因此,當讀者需要遠端登入到容器內進行一...
建立支援SSH服務的映象
上圖中,我們首先檢視當前系統中有哪些映象,可以看到我們有乙個ubuntu latest的映象,我們使用該映象來建立乙個容器。docker run it ubuntu latest bin bash,這個命令相當於create 並且 run起這個容器,這樣我們就進入了這個建立好容器的bash中 在ba...