一般,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

results matching ""

    No results matching ""