Ubuntu环境下

拉取最新的Ubuntu
docker pull ubuntu:latest

启动
docker run -it ubuntu:latest /bin/bash

更新apt-get
apt-get update

安装ssh、netstat
apt-get install -y openssh-server net-tools

配置ssh
    mkdir /root/.ssh
    touch /root/.ssh/authorized_keys
        在宿主机子上执行ssh-keygen -t rsa,敲三次回车,把/root/.ssh/id_rsa.pub里的内容拷到容器内authorized_keys中去

    创建脚本
    vim /root/run.sh
    #!/bin/bash
    /usr/sbin/sshd -D
    保存退出
    chmod +x /root/run.sh

退出镜像
exit

保存镜像【创建镜像】
docker commit 07a4a6c467e2 sshd:ubuntu

使用镜像
docker run -p 10022:22 -d sshd:ubuntu /root/run.sh

从宿主机子登录[上文中,已经把id_rsa.pub放入了容器authorized_keys中]
ssh 192.168.199.209 -p 10022

        CentOS环境下

拉取最新的Centos
docker pull centos:latest

启动
docker run -it centos:latest /bin/bash

安装passwd,openssl,openssh-server
 yum install -y passwd openssl openssh-server

配置ssh
    mkdir /root/.ssh
    touch /root/.ssh/authorized_keys
        在宿主机子上执行ssh-keygen -t rsa,敲三次回车,把/root/.ssh/id_rsa.pub里的内容拷到容器内authorized_keys中去

    创建脚本
    vim /root/run.sh
    #!/bin/bash
    /usr/sbin/sshd -D
    保存退出
    chmod +x /root/run.sh

    启动sshd
    /usr/sbin/sshd
    这一步,若报错,如
        Could not load host key: /etc/ssh/ssh_host_rsa_key
    则使用如下名令
        ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 【出现交互窗口,都按回车】
    再次执行,便是启动了
    这时,找出sshd进程pid【ps aux | grep sshd】,再kill掉

    修改 /etc/ssh/sshd_config 配置信息
        UsePAM yes 改为 UsePAM no 
        UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no

    sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
    sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config


退出镜像
exit

保存镜像【创建镜像】
docker commit 07a4a6c467e2 sshd:centos

使用镜像
docker run -p 10122:22 -d sshd:centos /root/run.sh

从宿主机子登录[上文中,已经把id_rsa.pub放入了容器authorized_keys中]
ssh 192.168.199.209 -p 10122

        最后,从上文中应该可以看出,其实创建Docker镜像,可以用Dockerfile,也可以直接docker commit。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐