docker 不用supervisord开启sshd 部署2
http://www.4linuxfun.com/docker-install-ssh-service/
- 准备基础镜像
出于学习目的,我使用的镜像都是自己打包的,感兴趣的可以看看我上一篇介绍centos下学习docker,其中有具体的镜像制作方法。 - 创建容器
#docker run -i -t centos6.5:version-1 /bin/bash
我使用的镜像是centos6.5,其中version-1是tag,使用-i参数进入交互模式,并且运行/bin/bash - ssh服务安装
- 安装ssh服务
#yum install openssh-server -y
- 安装passwd(修改密码需要)
#yum install passwd -y
- 修改sshd_config配置文件
UsePAM yes改成UsePAM no
- 关闭主机selinux
当使用passwd修改容器中root密码的时候,会报错:
passwd: system_u:system_r:initrc_t:s0 is not authorized to change the password of root
这时候,需要关闭主机selinux。
- 安装ssh服务
- 开机自起
在/root目录下创建run.sh脚本,添加如下内容:!/bin/bash
/usr/sbin/sshd -D
while:
do
sleep 10
done其实开机自起可以用CMD的,但是暂时不会。。。就统一用脚本执行的方式防止退出,感觉可调控行蛮好的 注意,修改run.sh的权限为777
- 保存修改
- 查看正在运行的容器ID
#docker ps
- commit修改的容器ID,保存为centos6.5,tag为sshd
#docker commit ID centos6.5:sshd
- 查看正在运行的容器ID
- 开启服务
#docker run -d -p 22:22 -t centos6.5:sshd /root/run.sh
以后台模式运行容器,且把容器的22端口映射到主机的22端口
这样,就可以从外网通过ssh连接到容器了。
PS:越来越喜欢docker了,学习nginx搭建反代理,我直接同一个镜像弄3~4个开启apache服务的容器,环境搭建速度是相当的快。