首页 > 代码库 > 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服务的镜像