dokcer映象新增ssh服務

2022-07-15 07:12:09 字數 3179 閱讀 3070

說明:為映象新增ssh服務其實就是乙個構建新映象的過程,主要喲兩種方式,一種是基於commit命令,用來儲存當前容器狀態的映象,另一種是基於dockerfile,通過配置檔案,由底層映象搭建。這裡主要通過為映象新增ssh服務的過程來熟悉映象搭建過程。

如果沒有ssh服務,需要從宿主機attach或者exec方式進入容器,但這沒有辦法解決從遠端管理容器的方法。ssh可以通過遠端主機連線docker容器,而不用從宿主機登入到容器。ssh雖然方便,但有許多人認為背離了docker的初衷,docker本就為單個服務而生,而且沒有從遠端主機管理的必要。

雖然有點爭議,但好在ssh只占用 少量的資源,而且安全性***,now,讓我們擱置爭議,來康康如何 新增ssh服務吧!

1.獲取並執行乙個ubuntu:18.04映象

docker pull ubuntu:18.04

docker run -it ubuntu:18.04 /bin/bash

或者直接執行run這一條命令也行,如果沒有映象則先拉取映象,然後執行容器

-t 表示在新容器內指定乙個偽終端或終端

-i 表示允許我們對容器內的 (stdin) 進行互動

-d 其它地方會出現這個表示在後台執行

2.剛執行的容器一般無法使用很多命令,需要安裝一些服務,但很多命令用不了,需要更新一下映象源才能使用。一般國外的源比較慢,要改成國內的源。

為ubuntu更換阿里源,並更新

eof更新

apt-get update
3.安裝配置ssh服務

apt-get install -y openssh-server
建立/var/run/sshd目錄並啟動ssh服務

mkdir -p /var/run/sshd

/usr/run/sshd -d &

可以通過netstat -ntlp檢視ssh是否啟動監聽,如果沒有這個命令需要安裝一下

apt-get install -y net-tools
取消pam登入限制,注釋掉有pam_loginuid.so這一行

vi /etc/pam.d/sshd
4.建立自啟動ssh服務的可執行檔案/run.sh,並新增可執行許可權

vim /run.sh

#!/bin/bash

#內容為

/usr/sbin/sshd -d

最後退出容器

exit
5.將退出的容器儲存為新的映象

docker ps -a

#命名為sshd並新增ubuntu標籤

docker commit id sshd:ubuntu

檢視本地新生成的映象sshd:ubuntu

docker images sshd:ubuntu
6.啟動容器,並新增埠對映

將宿主機的10022埠對映給容器的22埠

docker run -p 10022:22 -d sshd:ubuntu /run.sh
檢視埠對映

docker container port id
a6是容器id的前幾位,不用寫全也可以

解釋:

-p(小寫):指定對映埠

-d: 後台執行

/run.sh 執行指令碼

檢視容器運**況

docker ps
7.宿主機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...