一.基于commit命令创建
1.准备工作
更新apt缓存
安装apt-get install openssh-server -y
2.安装和配置SSH服务
如果需要正常启动SSH服务,则目录/var/run/sshd必须存在,手动创建目录。
mkdir -p /var/run/sshd
启动SSH服务
/usr/sbin/sshd -D &
查看容器的22端口(SSH服务默认监听端口)
apt install net-tools
netstat -luntp |grep 22
修改SSH服务的案件登录配置,取消pam登录限制(当你登录失败多次后就可以限制用户登录,从而起到保护电脑安全的作用)。
root@778e3d31ba3e:/# sed -ri 's/session required pam_loginuid.so /#session required pam_loginuid.so/g' /etc/pam.d/sshd
在root用户目录下创建.ssh目录,并复制需要登录的公钥信息(一般为本地主机用户目录文件下的.ssh/id_rsa.pub文件,可由ssh-keygen -t rsa命令生成)到authorized_keys文件中
box@box:~/.ssh$ su docker
密码:
docker@box:/home/box/.ssh$ ssh-keygen -t rsa
创建自启动SSH服务的可执行文件run.sh,并添加执行权限
退出容器
3.保存镜像
将所退出的容器用docker commit命令保存为一个新的sshd:ubuntu镜像
docker@box:~$ docker ps -a
docker@box:~$ docker commit 778e3d31ba3e ssh:ubuntu
docker@box:~$ docker images
4.使用镜像
启动容器并添加端口映射10022 -->22。其中10022是宿主机的端口,22是容器SSH服务监听端口
docker@box:~$ docker images
docker@box:~$ docker ps
docker@box:~$ docker run -p 10022:22 -d ssh:ubuntu /run.sh
docker@box:~$ ssh 192.168.31.117 -p 10022
存在问题:permission denied