09-Docker配置SSH服務

從這章開始,做實踐部分容器應用案例,在實踐中瞭解如何使用容器

爲鏡像添加SSH服務

我們習慣於使用ssh管理服務器,docker自帶attach和exec也可以用與進入容器,但都無法解決遠程管理容器的問題。文章會介紹如果創建一個帶有SSH服務的鏡像。

基於commit創建

[root@docker ~]# docker pull centos:7
[root@docker ~]# docker run -it centos:7 bash
#先爲docker修改root密碼
[root@4213ca71655c /]# passwd              
Changing password for user root.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
#安裝SSH服務
[root@4213ca71655c /]# yum -y install openssh-server
#創建對應key文件
[root@4213ca71655c /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
[root@4213ca71655c /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
[root@4213ca71655c /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
#修改SSH配置
[root@4213ca71655c /]# vi /etc/ssh/sshd_config
#UsePAM yes 改爲 UsePAM no 
#UsePrivilegeSeparation sandbox 改爲 UsePrivilegeSeparation no
#啓動 SSH服務
[root@4213ca71655c /]# /usr/sbin/sshd -D &
#創建自啓動腳本
[root@4213ca71655c /]# vi /run.sh
#!/bin/bash
 /usr/sbin/sshd -D
 [root@4213ca71655c /]# chmod +x /run.sh
 [root@4213ca71655c /]# exit
#保存鏡像
[root@docker ~]# docker commit 4213ca71655c sshd:centos
#端口映射
[root@docker ~]# docker run -p 10023:22 -d sshd:centos /run.sh
[root@docker ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                   NAMES
b859ee8f4649        sshd:centos        "/run.sh"           17 minutes ago      Up 17 minutes       0.0.0.0:10023->22/tcp   pensive_wiles
#測試登錄,使用宿主機ip+端口
[c:\~]$ ssh [email protected] 10023
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Wed Apr 29 14:11:03 2020 from 192.168.3.71
[root@b859ee8f4649 ~]# 

基於Dockerfile創建

···
[root@docker ~]# mkdir ssh_centos
[root@docker ~]# cd ssh_centos/
[root@docker ssh_centos]# vim Dockerfile

FROM centos:7
RUN echo "123456" | passwd --stdin "root"
RUN yum -y install openssh-server
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
RUN sed -ri 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN sed -ri 's/UsePrivilegeSeparation sandbox/UsePrivilegeSeparation no/g' /etc/ssh/sshd_config
RUN /usr/sbin/sshd -D &
RUN echo "#!/bin/bash" >> /run.sh
RUN echo "/usr/sbin/sshd -D" >> /run.sh
RUN chmod 755 /run.sh
EXPOSE 22
CMD ["/run.sh"]
···
···
[root@docker ssh_centos]# docker build -t sshdtest:dockerfile .
#有個點(.)代表從當前目錄查找dockerfile文件
[root@docker ssh_centos]# docker run -d -p 10122:22 sshdtest:dockerfile
測試
ssh 192.168.3.109 10122
···

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章