1、准备工作
获取Ubuntu镜像,并创建一个容器
docker pull docker.io/ubuntu
docker run -it --name baseubuntu ubuntu:latest
2、安装和配置ssh服务(进入容器)
①更新下apt-get
root@b3e5f92e6dde:/# apt-get update
②安装SSH服务,选择主流的openssh-server作为服务端
root@b3e5f92e6dde:/# apt-get -y install openssh-server
③如果需要正常启动SSH服务,必须要有/var/run/sshd目录存在
root@b3e5f92e6dde:/# mkdir -p /var/run/sshd
root@b3e5f92e6dde:/# /usr/sbin/sshd -D & //&代表后台执行,不加的话一直处于ssh的状态
④此时查看容器的22端口(SSH服务默认监听的端口),已处于监听状态
root@b3e5f92e6dde:/# netstat -tunlp
//如果提示没有netstat命令的先安装下
root@b3e5f92e6dde:/# apt-get install net-tools
⑤取消UsePAM登录限制,设置UsePAM no
root@b3e5f92e6dde:/# vi /etc/ssh/sshd_config
⑥可另起一窗口(或退出容器),配置在宿主机配置需要的公钥信息
[testerZ@azeng ~]$ ssh-keygen -t rsa
[testerZ@azeng ~]$ cat ~/.ssh/id_rsa.pub //复制公钥
⑦在root下创建.ssh目录,将上一步骤得到的公钥复制到/root/.ssh/authorized_kesy中
root@b3e5f92e6dde:/# mkdir -p /root/.ssh/
root@b3e5f92e6dde:/# vi /root/.ssh/authorized_keys
⑧创建启动自动SSH服务的文件,并设置权限
root@b3e5f92e6dde:/# vi /run.sh
//以下为内容
#!/bin/bash
/usr/sbin/sshd -D
root@b3e5f92e6dde:/# chomd +x run.sh
⑨docker commit生成新的镜像
[testerZ@azeng ~]$ docker commit b3e5f92e6dde my_sshd:ubuntu
3、使用镜像,通过ssh登录容器
[testerZ@azeng ~]$ docker run -p 10022:22 -d my_sshd:ubuntu /run.sh
[testerZ@azeng ~]$ ssh localhost -p 10022
Enter passphrase for key '/home/testerZ/.ssh/id_rsa': //输入之前设置公钥时的密码
//root用户登录,或者在第⑤设置时,设置PermitRootLogin yes
[testerZ@azeng ~]$ ssh root@localhost -p 10022