首页 > 代码库 > docker基于Dockerfile命令创建支持ssh服务的镜像

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

首先,创建一个sshd_centos工作目录:

[root@localhost ~]# mkdir sshd_centos

[root@localhost ~]# cd sshd_centos

[root@localhost sshd_centos]# touch Dockerfile run.sh

技术分享 

[root@localhost sshd_centos]# ssh-keygen -t rsa

[root@localhost sshd_centos]# cat ~/.ssh/id_rsa.pub > authorized_keys

 技术分享

编写Dockfile文件

[root@localhost sshd_centos]# vim Dockerfile

#设置继承镜像

FROM docker.io/centos

#提供作者信息

MAINTAINER from xldwhj (wanghaojie@cmos.chinamobile.com)

#开始运行命令

RUN yum -y update

#安装openssh-serverfuwu

RUN yum -y install openssh-server

#修改/etc/ssh/sshd_config

RUN sed -i ‘s/UsePAM yes/UsePAM no/g‘ /etc/ssh/sshd_config

RUN mkdir -p /var/run/sshd

RUN mkdir -p /root/.ssh

RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

#复制配置文件到相应位置,并赋予脚本可执行权限

ADD authorized_keys /root/.ssh/authorized_keys

ADD run.sh /run.sh

RUN chmod 755 /run.sh

#变更root密码为123123

RUN echo "root:123123"|chpasswd

#开放22端口

EXPOSE 22

#运行脚本,启动sshd服务

CMD ["/run.sh"]

技术分享 

Dockerfile里的两条ssh-keygen要加上,如果不加ssh启动就会报如下错误。

技术分享

在ssh_centos目录下,docker build命令来创建镜像。注意,此条命令后又一个“.”,代表当前目录中的Dockerfile。

[root@localhost sshd_centos]# docker build -t sshd:dockerfile .

执行到最后出现Successfully build XXX字样,则说明镜像创建成功。

技术分享

[root@localhost sshd_centos]# docker images

技术分享

使用sshd:dockerfile镜像运行一个容器。直接起动镜像

[root@localhost sshd_centos]# docker run -d -p 10222:22 sshd:dockerfile

技术分享

[root@localhost .ssh]# ssh root@192.168.134.130 -p 10022

技术分享

如上所示,成功使用ssh登入到容器中。

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