创建支持ssh服务的docker容器和镜像

http://www.kongxx.info/blog/?p=57

1. 这里使用的centos作为容器,所以首先下载centos的images
sudo docker pull centos

2. 下载后运行一个centos的容器,这里使用centos6作为我测试的容器
sudo docker run --name=centos-ssh -i -t centos:centos6 /bin/bash

3. 安装openssh-server服务软件包
yum install openssh-server

4. 编辑sshd的配置文件/etc/ssh/sshd_config,将其中UsePAM参数设置成“no”

5. 启动sshd服务
/etc/init.d/sshd start

6. 添加测试用户admin,密码admin
useradd admin
echo 'admin:admin' | chpasswd

7. 为了使新添加的用户可以运行sudo命令,需要安装sudo软件包,并将admin添加到sudoers里
yum install sudo <--安装sudo软件包
visudo <--编辑sudoers,添加下面的行到文件里
admin ALL=(ALL) ALL

8. 测试,做完上面工作之后,使用ifconfig来查看一下容器的ip,或者使用“sudo docker inspect ”查看,然后就可以在宿主机器上通过ssh admin@<ip>来访问新创建的docker容器了。

9. 如果想要把做好的支持ssh服务的容器作为一个docker的镜像,先退出容器,然后使用下面的命令来创建
sudo docker commit <container id> <image name>

10. 用刚保存的镜像,后台启动一个新的容器
docker run --name [image-name] -i -t -p 50001:22 [image-id]
例: # docker run -d -p 50001:22 ubuntu/ruby:v2 /usr/sbin/sshd -D
11. ssh远程登录该容器
# ssh root@localhost -p 50001

如果想要通过ssh密钥登录,则在第2步,修改 /etc/ssh/sshd_config 文件,将RSAAuthentication 和 PubkeyAuthentication 后面的值都改成yes ,保存。
将本地.ssh下的id_rsa.pub上传到容器中的 id_rsa.pub,并 # mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys,然后 # chmod 600 /root/.ssh/authorized_keys 即可.

原文地址:https://www.cnblogs.com/linkenpark/p/5885167.html