基于commit命令的方式
//运行基于Ubuntu:14.04的镜像的容器 
docker run -it --rm ubuntu:14.04 /bin/bash 
 //修改一下ubuntu14:04的源我用的是163的源 
 163源的内容是这 
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse 
 可以用这样的命令将上述内容追加到source.list文件中 
echo 源内容 >> /etc/apt/source.list 
sudo apt-get update//更新安装源 
sudo apt-get install openssh-server//安装openssh-server服务 
 到现在我们还不能使用ssh功能 
 我们需要在/var/run创建一个sshd的目录 
mkdir -p /var/run/sshd 
 //并以后台的形式打开sshd服务 
/var/run/sshd -D & 
netstat -natp//查看22号端口是否被监控 
Active Internet connections (servers and established) 
 Proto Recv-Q Send-Q Local Address Foreign Address S 
 tcp 0 0 0.0.0.0:22 0.0.0.0:* L 
 tcp6 0 0 :::22 :::* 
 确认sshd服务已经开启 
 默认情况下pam认证程序会对我们的ssh登录进行限制,修改/etc/pam.d/sshd的配置。 
#session required pam_loginuid.so 
 找到这一行,并在前面如上述加一个#作为注释。 
 接下来容器的ssh服务开启后,而我们需要远程连接容器的主机A上生成公钥和私钥,并将公钥放到容器中。 
 一般用ssh-keygen -t rsa生成公钥和私钥 
 一路回车后,cd ~/.ssh 
ls//查看目录中的内容 
[root@VM_116_112_centos .ssh]# ls 
 id_rsa id_rsa.pub known_hosts 
 id_rsa.pub中的内容就是你的公钥 
 上述命令请在你远程登入容器的主机上运行,(其实原理自己想想应该可以明白,你的容器上开启了ssh服务,你远程的主机需要连接容器,那么需要将你远程的主机的公钥加到容器中,才可以以ssh的方式登录容器) 
 之后进入容器cd ~ 
mkdir .ssh 
touch .ssh/authorized_keys将远程主机的公钥放入这个新建的文件中。 
 接下来制作ssh运行脚本。 
 由于容器运行时一般只能运行一个命令,那么我们将要启动的服务和程序放在一个脚本中,运行这个脚本。 
root@1307917db024:~# vi run.sh 
 root@1307917db024:~# chmod u+x run.sh 
 root@1307917db024:~# cat run.sh 
#! /bin/bash 
 /usr/sbin/sshd -D 
 
 脚本中的命令不能添加&,如果添加了脚本会立马执行完毕,则相应的容器也退出了, -D告诉SSH服务不以守护进程运行,而是和运行终端关联,有了关联终端,容器就不会退出了。 
 exit退出容器。 
 最后打包成镜像 
 docker commit 容器名 ssh:commit 
docker images 
 REPOSITORY TAG IMAGE ID CREATED SIZE 
 ssh commit d079b544a6dc 30 seconds ago 293.1 MB注意一点主机A下必须是root用户,不然会有认证失败。 
 容器主机 
[root@VM_116_112_centos .ssh]# docker run -d -p 2022:22 ssh:commit /root/run.sh 
 1f780de627866424ade43c7faf041f6f56b73d2bc27bbb25b078201f8afb117b 
 [root@VM_116_112_centos .ssh]# docker ps 
 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
 1f780de62786 ssh:commit "/root/run.sh" 8 seconds ago Up 3 seconds 0.0.0.0:2022->22/tcp nostalgic_morse 
远程主机 
root@ubuntu:~/.ssh# ssh 123.206.33.231 -p 2022 
 Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-96-generic x86_64)* Documentation: https://help.ubuntu.com/ 
 ` 
 The programs included with the Ubuntu system are free software; 
 the exact distribution terms for each program are described in the 
 individual files in /usr/share/doc/*/copyright.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by 
 applicable law.root@1f780de62786:~# ls 
 ` 
 PS:https://hub.docker.com/r/tonyxinminghui/ssh/ 
 这是我的dockerhub上的镜像。