标签:docker
关于container是否提供ssh服务,大家一直在争论。目前docker对远程主机登入container并没有更好的办法,除了登录宿主机用attach或exec登录外,只能在container安装sshd服务了,通过这个基础镜像我们在安装其他服务的时候,就可以直接使用有ssh服务的镜像了。
使用Dockerfile方法
前期准备工作
#mkdir sshd_ubuntu 创建工作目录
#cd sshd_ubuntu
#touch Dockerfile run.sh 创建一会需要拷贝到container的文件
#vi run.sh run.sh的内容
#!/bin/bash
/usr/sbin/sshd–D
#cat ~/.ssh/id_rsa.pub > authorized_keys 拷贝需要登录到container的机器的公钥
编写Dockerfile
------------------------------------
#设置继承镜像
FROMubuntu:163
#提供者信息
MAINTAINERfrom buranle,test sshd images
#因为使用的镜像已经修改为163的apt源,这里就不做修改了
#安装ssh服务
RUNapt-get install -y openssh-server
RUN mkdir-p /var/run/sshd
RUN mkdir-p /root/.ssh
#取消pam模块的限制
RUN sed-ri ‘s/session required pam_loginuid.so/#session required pam_loginuid.so/g‘ /etc/pam.d/sshd
#复制文件到响应的位置,并赋予脚本执行权限
ADDauthorized_keys /root/.ssh/authorized_keys
ADDrun.sh /run.sh
RUN chmod755 /run.sh
#开放端口
EXPOSE 22
#设置自启动命令
CMD ["/run.sh"]
----------------------------------------------
#dockerbuild -t sshd:dockerfile .
看到success字样就代表我们的image已经生成成功了。
#dockerimages
#dockerrun –d –p 11111:22 sshd:dockerfile
2、当然我们也可以使用commit的方法,这里就不多介绍了
注:使用apt使用网易源的方法
更改/etc/apt/sources.list或者在source.d下新建一个163.list,内容为
标签:docker
原文地址:http://buranle.blog.51cto.com/8870751/1602315