docker centos6 自启动ssh服务
前期准备
- 下载centos6.6版本镜像
- 启动容器完善容器环境
- 修改登录密码
- 更换yum源地址
- 推荐使用阿里源http://mirrors.aliyun.com/repo/Centos-6.repo
- 没有wegt命令,可以手动创建文件,粘贴内容。
- yum makecache
- 安装wget(用于测试yum是否成功)
- 完成以上步骤之后,创建新镜像:centos6.6:base
Dockerfile编辑
1. 创建/home/docker/Dockerfile文件并编写一下内容。
2. 在/home/docker/目录下执行 docker build -t='centos6.6:basic' .
3. 注意上条命令后边的“.”。
# 选择一个已有的os镜像作为基础
FROM centos6.6:base
# 镜像的作者
MAINTAINER Chu Jie "chuJie@qq.com"
# 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
# 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
使用镜像
运行容器
docker run -d -p 10101:22 --name c1 centos6.6:basic
链接容器
docker exec -i -t c1 /bin/bash
检查sshd服务
service sshd status
ssh链接测试
坑
- 使用 docker run -i -t –name c1 centos6.6:basic /bin/bash 运行容器,sshd服务是不开启的,必须先-d 在用exec切入。
- 如不进行前期准备是不会成功的,因为YUM源不对。
- boot2docker使用过程中,每次重启后Dockerfile文件就会丢失。建议外部存储。