您的位置:首页 > 运维架构 > Docker

通过Dockerfile创建支持SSH服务的CentOS镜像

2017-01-14 00:09 1136 查看
http://blog.csdn.net/cmzsteven/article/details/49096645

昨天写了一篇《创建支持SSH服务的CentOS镜像 》,介绍的是如何使用命令一步一步的新建一个支持SSH服务的Centos镜像。但是无法满足生产环境流程化,标准化,快速生成的需要的。

因此就需要使用Dockerfile来生成所需镜像,这样,无论在什么环境下,都可以使用Docker build快速,标准,无差错的批量生成一模一样的镜像,方便管理员快速布署。

具体步骤如下:

1、在/root目录下新建sshd_centos目录用于存放Dockerfile和其他相关文件。

mkdir sshd_centos
#进入该目录
cd sshd_centos
1
2
3
1
2
3
2、新建在容器中启动sshd服务的脚本

vim run.sh
1
1
脚本内容如下:

#!/bin/bash
/usr/sbin/sshd -D
1
2
1
2
3、在宿主机上生成RSA密钥

ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
1
1
然后将生成的密钥复制到sshd_centos目录中

cp /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub /root/sshd_centos
cat ssh_host_rsa_key.pub>authorized_keys
1
2
1
2
5、在/root/sshd_centos目录下新建Dockerfile文件

vim Dockerfile
1
1
Dockerfile内容:

#生成的新镜像以centos镜像为基础
FROM centos
MAINTAINER by cmzsteven (changmingzhi@163.com)
#升级系统
RUN yum -y update
#安装openssh-server
RUN yum -y install openssh-server
#修改/etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
#将密钥文件复制到/etc/ssh/目录中
ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
RUN mkdir -p /root/.ssh
ADD authorized_keys /root/.ssh/authorized_keys
#将ssh服务启动脚本复制到/usr/local/sbin目录中,并改变权限为755
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
#变更root密码为147258
RUN echo "root:147258"|chpasswd
#开放窗口的22端口
EXPOSE 22
#运行脚本,启动sshd服务
CMD ["/usr/local/sbin/run.sh"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
其中绝大多数命令在《创建支持SSH服务的CentOS镜像 》都有介绍

其实可以把Dockerfile想像成shell角本,里面执大部分内容都是shell命令。

此时 /root/sshd_centos目录下应该存在如下文件:

Dockerfile
run.sh
ssh_host_rsa_key
ssh_host_rsa_key.pub
1
2
3
4
1
2
3
4
6、使用docker build生成镜像文件

docker build -t sshd:dockerfile .
1
1
注意命令最后面是一个”.”,这说明Dockerfile是在当前目录下。

执行完成后,会在最后显示

Successfully built 411d5fb16366
1
1
最后一串字符为Container ID

然后查看生成的镜像

docker images
1
1
执行结果

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
sshd                dockerfile          411d5fb16366        9 minutes ago       278 MB
1
2
3
1
2
3
7、以新创建的镜像新建容器

docker run -d -p 10022:22 sshd:dockerfile /usr/local/sbin/run.sh
1
1
将宿主机的10022端口映射到容器的22端口,并启动sshd服务。

现在就可以使用ssh工具远程通过宿主机的10022端口访问容器了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: