一般,Linux系统管理员是通过SSH服务管理操作系统的,但Docker的很多镜像都不带SSH服务。
基于commit命令构建
准备ubuntu:14.04镜像容器
docker run -it ubuntu:14.04 /bin/bash
查看是否存在SSHD服务
root@cf5c19a3fb43:/# sshd
配置国内源
root@cf5c19a3fb43:/# vi /etc/apt/sources.list.d/163.list
root@cf5c19a3fb43:/# apt-get update
安装SSH服务
root@cf5c19a3fb43:/# apt-get install openssh-server
要正常启动SSH服务,需要目录/var/run/sshd
存在
root@cf5c19a3fb43:/# mkdir -p /var/run/sshd
root@cf5c19a3fb43:/# /usr/sbin/sshd -D &
查看容器的22端口
root@cf5c19a3fb43:/# netstat -antp | grep 22
修改SSH服务的安全登录配置,取消pam登录限制
root@cf5c19a3fb43:/# sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
在root用户创建.ssh目录,并复制需要登录的公钥信息到authorized_keys
root@cf5c19a3fb43:/# mkdir root/.ssh
root@cf5c19a3fb43:/# vi /root/.ssh/authorized_keys
创建自启动SSH服务的执行文件run.sh
#!/bin/bash
/usr/sbin/sshd -D
提交镜像
docker commit fc1 sshd:ubuntu 7ae