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

Posted xldwhj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

#开始运行命令

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服务的镜像的主要内容,如果未能解决你的问题,请参考以下文章

Gradle项目构建docker镜像(支持Gradle多模块)

Docker 创建镜像

Dockerfile概念简述

如何用Dockerfile创建镜像

Docker基础命令使用

自定义通过Dockerfile创建httpd镜像