Docker為映象新增SSH服務

2021-09-29 04:38:32 字數 3677 閱讀 2869

很多時候使用者希望通過遠端登入伺服器來進行管理,但是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命令來生成秘鑰,並放至該檔案中。

此時配置ssh基本完成,此時需要建立自動啟動ssh的檔案run.sh,並新增可執行許可權

vi /run.sh

chmod +x run.sh

檔案內容如下:

#!/bin/bash

/usr/sbin/sshd -d

之後退出容器,提交該容器為映象即可

docker commit

2.基於docker命令的建立首先建立乙個工作目錄 mkdir sshd_ubuntu

之後在該目錄中建立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...