本教程基于commit命令创建
1 准备工作
使用ubuntu:14.04镜像创建一个容器
docker run -it ubuntu:14.04 /bin/bash
2 安装和配置SSH服务
在容器中更新apt缓存,安装openssh-server
apt-get update;
apt-get install openssh-server -y;
创建目录/var/run/sshd 并启动SHH服务
mkdir -p /var/run/sshd
/usr/sbin/sshd -D
contrl+c
输入netstat -tunlp命令查看端口22是否已经处于监听状态
修改SSH服务的安全登录配置,取消pam登录限制:
sed -r 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
在root用户目录下创建.ssh目录,并复制需要登录的公钥信息(一般为本地主机用户目录下的.ssh/id_rsa.pub文件)到authorized_keys文件中
mkdir root/.ssh
vi /root/.ssh/authorized_keys
创建自动启动SSH服务的可执行文件run.sh ,并添加可执行权限
其中 run.sh文件内容如下
#! /bin/bash
/usr/sbin/sshd -D
vi /run.sh
chmod +x run.sh
输入exit两次 退出容器
3 保存镜像
将退出的容器用docker commit 命令保存为一个新的ssh:ubuntu镜像
其中2bf是退出的容器ID的前三位
docker commit 2bf sshd:ubuntu
使用docker images查看本地生成的新镜像sshd:ubuntu
4 使用镜像
启动容器 并添加端口映射10022 -->22,其中10022是宿主主机的端口,22是容器的SSH服务监听端口
docker run -p 10022:22 -d sshd:ubuntu /run.sh
启动成功后,可以在宿主主机上可到容器运行的详细信息
确保宿主主机对外端口10022对外防火墙已经打开
在宿主主机(47.98.218.29 )或其他主机上可以通过SSH访问10022端口
ssh 47.98.218.29 -p 10022