基于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服务的镜像