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
···

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