天下風雲出我輩
一入江湖歲月催

Docker镜像添加SSH服务

一般情况下,系统管理员都习惯通过SSH服务来远程登录管理服务器,但是docker的很多镜像是不带ssh服务的,之前我们讲过用Nsneter,attach ,exec等命令进入,但是这些命令无法解决远程管理容器,那么这个时候我们就需要创建一个带有ssh服务的镜像,下面我们介绍两种方法基于commit 和dockerfile创建。

一、基于commit命令创建

docker提供commit命令支持用户提交自己的修改,并生成新的镜像。命令格式为:

docker commit CONTAINER [REPOSTORY[:TAG]]

这里以centos镜像为例。

# 创建一个centos容器

[[email protected] ~]# docker run -it --name ssh centos:7 bash

# 安装并启动sshd服务

bash-4.2# yum install -y openssh-server openssh-clients

报错:

Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key

解决:

$ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
$ ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
$ ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""

再次启动:

$ /usr/sbin/sshd -D &

bash-4.2# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      79/sshd             
tcp6       0      0 :::22                   :::*                    LISTEN      79/sshd

修改root密码

bash-4.2# passwd root
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.

退出并提交镜像

$ docker commit -m "sshd" f1e anonym0x1/centos:7

启动容器

$ docker run -d -p 10022:22 anonym0x1/centos:7 /usr/sbin/sshd -D

也可以使用-v标记也可以指定挂载一个本地的已有目录到容器中去作为数据卷:

$ docker run -d -p 10022:22 --name data -v /usr/data:/opt/webapp anonym0x1/centos:7 /usr/sbin/sshd -D

远程登录测试

[[email protected] ~]# ssh [email protected] -p 10022

 

二、Dockerfile创建sshd

2.1创建工作目录及相关文件

[[email protected] ~]# mkdir sshd

2.2 编写Dockerfile文件

#This dockerfile is sshd

FROM centos

MAINTAINER Anonym0x1 [email protected]

RUN yum install vim net-tools openssh-server openssh-clients -y && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && \
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" &&\
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" 
RUN echo 'test-2018' | passwd --stdin root 
EXPOSE 22

2.4 创建镜像

[[email protected] sshd]# docker build -t test/sshd:v1 .

2.5 运行镜像

[[email protected] sshd]# docker run --name sshd -itd -p 10023:22 test/sshd:v1 /usr/sbin/sshd -D

2.6 测试远程连接

[[email protected] ~]# ssh [email protected] -p 10023

 

赞(4) 打赏
未经允许不得转载:Anonym0x1 » Docker镜像添加SSH服务

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏