一、拉取镜像
docker pull centos
二、生成容器
docker run -itd --name=centos_ssh --privileged=true centos /usr/sbin/init
1、其中–name指定容器名称
2、–privileged=true 给容器访问Linux内核特权,后面要使用systemctl,不加–privileged=true后面将无法执行systemctl命令。
三、进入容器
docker exec -it centos_ssh bash
四、在容器内配置
1、安装passwd和ssh-server
yum update -y && yum install passwd -y &&yum install openssh-server -y
2、修改密码
passwd
之后会让你输入密码两次,记住密码即可
3、编辑配置文件
该操作是为配置公钥连接做准备,若不需要公钥连接,可以忽略这一步
请移步到SSH公钥登录
4、开启ssh并设置开机自启动
systemctl restart sshd
systemctl enable sshd
五、将容器打包成镜像
docker commit -m "centos with ssh" -a "root" centos_ssh centos_ssh:latest
-m 来指定提交的说明信息
-a 可以指定更新的用户信息
第一个centos_ssh是容器名称
第二个centos_ssh是要生成的镜像名称,latest是版本号,默认是latest
使用
docker images
就能够看到刚生成的镜像了,生成镜像后可以将刚才的用于创建镜像的容器停止并删除,以节约资源。
六、通过生成的镜像创建容器
docker run -d -p 2222:22 centos_ssh /usr/sbin/sshd -D
-p是指定端口号,格式为主机端口号:容器端口号,即将容器相应端口号映射到主机相应端口号
七、连接
1、密码连接
ssh root@localhost -p 2222
2222为你刚才指定的主机端口号
2、公钥连接
主机中使用命令
ssh-keygen -t rsa
生成公钥,然后将公钥复制后粘贴在容器中的~/.ssh/authorized_keys
中,可以参考SSH公钥登录
配置完成后使用
ssh root@localhost -p 2222
即可连接,且不需要再输入密码
八、使用Dockerfile构建镜像
dockerfile内容如下:
#生成的新镜像以centos镜像为基础
FROM centos
#升级系统
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
# 生成sshkey
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#变更root密码
RUN echo "root:你要修改成的密码"|chpasswd
#开放窗口的22端口
EXPOSE 22
#运行脚本,启动sshd服务
CMD ["/usr/sbin/sshd", "-D"]
然后使用
docker build -t centos_ssh .
构建镜像即可。构建镜像后可以通过
docker images
查看构建好的镜像,然后就可以通过构建好的镜像创建容器并进行连接了。