基于docker commit命令实现支持ssh的操作系统镜像

Posted DreamMakers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于docker commit命令实现支持ssh的操作系统镜像相关的知识,希望对你有一定的参考价值。

下面以ubuntu操作系统为例说明如何创建一个支持ssh的操作系统镜像。

首先我们先搜索和下载ubuntu镜像,如下所示:

 

然后使用docker pull命令拉取ubuntu:latest镜像到本地。通过docker images可以看到本地已经有ubuntu:latest镜像了。

下面我们运行该镜像,并且进入到容器中。

docker run -it ubuntu /bin/bash

可以看到我们已经进入到容器中。在容器中执行sshd命令查看是否有ssh服务,在ubuntu镜像中是没有sshd的。

接下来,我们需要更新apt-get,并且安装openssh-server。

安装完成之后的信息如下所示:

当openssh-server安装完成以后,我们需要手动启动ssh服务,具体步骤如下:

然后我们使用netstat查看ssh服务对应的端口是否处于监听状态。如果报错netstat没有找到,则需要使用apt-get install net-tools安装相应的包。

从上可以看出,容器中22端口已经处于监听状态。

接下来我们需要修改SSH服务的安全登录配置,取消pam登录限制:

sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd

mkdir root/.ssh

并使用docker cp命令将登录需要的公钥信息id_rsa.pub文件内容拷贝到容器中的/root/.ssh/目录下的authorized_keys中:

至此,SSH登录相关的配置已经配置完成。

接下来,我们需要创建一个可执行脚本,便于在容器启动的时候自动执行脚本开启SSH服务。

我们在根目录/下创建一个run.sh脚本,脚本中是开启SSH服务的命令:

#!/bin/bash

/usr/sbin/sshd -D

最后我们退出容器,并将使用docker commit命令将容器提交为新的镜像。

可以看到我们这里多了一个sshd:ubuntu的本地镜像。接下来,我们以这个镜像来创建容器。

现在就可以通过ssh root@192.168.*.* -p 10022命令远程登录到这个容器了。

 

 

 

以上是关于基于docker commit命令实现支持ssh的操作系统镜像的主要内容,如果未能解决你的问题,请参考以下文章

docker基于Dockerfile命令创建支持ssh服务的镜像

Docker 基于Ubuntu镜像添加SSH服务

为Docker镜像添加SSH服务

10.Docker技术入门与实战 --- 为镜像添加SSH服务

创建支持带有ssh服务镜像的两种方法

创建支持SSH服务的镜像