创建docker镜像需要基础镜像,目前官方已提供了多种基础镜像,参见: https://hub.docker.com/explore/
要想创建支持centos的ssh镜像,就需要以centos镜像为基础来创建,下面是创建步骤:
1. docker pull centos:6 #获得centos 6系统的镜像
2. 新建在容器中启动sshd服务的脚本,编辑run.sh:
#!/bin/bash
/usr/sbin/sshd -D
3. 在宿主机上生成RSA密钥,然后将生成的密钥复制到sshd_centos目录中:
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
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
4. 在/root/sshd_centos目录下新建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"]
5. 切换到Dockerfile文件夹,编译生成镜像:
docker build -t sshd:dockerfile .
6. 查看镜像文件情况:
docker images
7. 利用新建的镜像启动一个容器:
docker run -d -p 10022:22 sshd:dockerfile /usr/local/sbin/run.sh
其中:将宿主机的10022端口映射到容器的22端口,并启动sshd服务。 现在就可以使用ssh工具远程通过宿主机的10022端口访问容器了。
如果想编译docker源码,则需要以docker镜像作为基础镜像(官方建议,内部已集成编译环境),也就是说所有关于镜像都需要由基础镜像出发进行创建。
相关文章:
Docker源码分析
http://www.infoq.com/cn/articles/docker-source-code-analysis-part1/
Dcokerfile书写规则
http://blog.csdn.net/qinyushuang/article/details/43342553
Docker源码编译
http://www.cnblogs.com/styshoo/p/5824895.html
涉及cgroup资源控制的配置
http://baike.baidu.com/link?url=jRMznyBNXOVJG9rVmLNt_bim7HgLIYgT4fbynJp0uqG25lMBmVHQZxxJRp1LYoYqRE1RDsZrKQbM7u62xB5gQK