1. 下载Centos镜像
docker pull centos:7
2. 安装配置 ssh
# 以交互式进入centos7镜像创建的容器中。
docker run -it centos:7 bash
#安装ssh服务 openssl
yum install openssh-server passwd -y
#修改配置文件
vim /etc/ssh/sshd_config
# UsePAM no
# UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no 找不到
#或者 也可以使用下面的命令:
#sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
#sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
/usr/sbin/sshd -D #启动ssh服务,会报以下错误
# Could not load host key: /etc/ssh/ssh_host_rsa_key
# Could not load host key: /etc/ssh/ssh_host_ecdsa_key
# Could not load host key: /etc/ssh/ssh_host_ed25519_key
# sshd: no hostkeys available -- exiting.
# 解决报错
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
#启动ssh服务; 会弹出一个警告,不必理睬。
/usr/sbin/sshd -D &
#WARNING: 'UsePAM no' is not supported in Fedora and may cause several problems.
#修改root密码
password root
3. 其他配置(按需选择)
因为镜像是阉割版,所以有些东西需要自己安装
# 安装 vim
yum install vim -y
# 安装 chattr 和 lsattr 命令
yum install e2fsprogs -y
# 【注意】要想使用chattr和lsattr命令,需要在启动容器时使用这样的命令[docker run -it --cap-add LINUX_IMMUTABLE 镜像 bash]
4. 打包为images和tar
#打开一个新的终端------>【重点】
docker ps -q #获取当前容器id
#docker commit 容器id 镜像名
docker commit [id] centos_ssh
#可以看到刚才打包生成centos_ssh镜像。
docker images
##重新进入第一步没有关闭的终端中
#输入exit退出并关闭容器。
exit
# [将镜像打包生成tar文件] ---这一步不是必须的,按需选择
#o是小写。
docker save -o centos_ssh.tar centos_ssh
#查看刚才将镜像生成的tar文件。
ls
5. 启动
#以守护进程的形式启动
docker run -d -p 9999:22 centos_ssh bash -c "while true;do each hello zzyy;sleep 2;done"
#启动ssh服务
docker exec -it [id] /usr/sbin/sshd -D &
6. ssh登录
ssh root@ip:9999