通過Dockerfile建立支援SSH服務的CentOS映象
阿新 • • 發佈:2018-12-26
昨天寫了一篇《建立支援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埠訪問容器了。