1. 程式人生 > >通過Dockerfile建立支援SSH服務的CentOS映象

通過Dockerfile建立支援SSH服務的CentOS映象

昨天寫了一篇《建立支援SSH服務的CentOS映象 》,介紹的是如何使用命令一步一步的新建一個支援SSH服務的Centos映象。但是無法滿足生產環境流程化,標準化,快速生成的需要的。
因此就需要使用Dockerfile來生成所需映象,這樣,無論在什麼環境下,都可以使用docker build快速,標準,無差錯的批量生成一模一樣的映象,方便管理員快速佈署。
具體步驟如下:

1、在/root目錄下新建sshd_centos目錄用於存放Dockerfile和其他相關檔案。

mkdir sshd_centos
#進入該目錄
cd sshd_centos

2、新建在容器中啟動sshd服務的指令碼

vim run.sh

指令碼內容如下:

#!/bin/bash
/usr/sbin/sshd -D

3、在宿主機上生成RSA金鑰

ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

然後將生成的金鑰複製到sshd_centos目錄中

cp /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub /root/sshd_centos
cat ssh_host_rsa_key.pub>authorized_keys

5、在/root/sshd_centos目錄下新建Dockerfile檔案

vim Dockerfile

Dockerfile內容:

#生成的新映象以centos映象為基礎
FROM centos
MAINTAINER by cmzsteven ([email protected]163.com)
#升級系統
RUN yum -y update
#安裝openssh-server
RUN yum -y install openssh-server
#修改/etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
#將金鑰檔案複製到/etc/ssh/目錄中
ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
RUN mkdir -p /root/.ssh
ADD authorized_keys /root/.ssh/authorized_keys
#將ssh服務啟動指令碼複製到/usr/local/sbin目錄中,並改變許可權為755
ADD run.sh /usr/local/sbin/run.sh RUN chmod 755 /usr/local/sbin/run.sh #變更root密碼為147258 RUN echo "root:147258"|chpasswd #開放視窗的22埠 EXPOSE 22 #執行指令碼,啟動sshd服務 CMD ["/usr/local/sbin/run.sh"]

其中絕大多數命令在《建立支援SSH服務的CentOS映象 》都有介紹
其實可以把Dockerfile想像成shell角本,裡面執大部分內容都是shell命令。

此時 /root/sshd_centos目錄下應該存在如下檔案:

Dockerfile
run.sh
ssh_host_rsa_key
ssh_host_rsa_key.pub

6、使用docker build生成映象檔案

docker build -t sshd:dockerfile .

注意命令最後面是一個”.”,這說明Dockerfile是在當前目錄下。
執行完成後,會在最後顯示

Successfully built 411d5fb16366

最後一串字元為Container ID
然後檢視生成的映象

docker images

執行結果

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
sshd                dockerfile          411d5fb16366        9 minutes ago       278 MB

7、以新建立的映象新建容器

docker run -d -p 10022:22 sshd:dockerfile /usr/local/sbin/run.sh

將宿主機的10022埠對映到容器的22埠,並啟動sshd服務。
現在就可以使用ssh工具遠端通過宿主機的10022埠訪問容器了。