zoukankan      html  css  js  c++  java
  • 制作可以 SSH 登录的 Docker 镜像

    Docker使用系列一我们把镜像源改为了阿里云的,方便后续的操作。

    执行这个命令就把源地址改为阿里的:

    curl https://git.oschina.net/feedao/Docker_shell/raw/start/ali-centos.sh | sh

    第一安装Docker:

    yum -y install docker-io

    第二 启动Docker:

    service docker start

    第三安装制作CentOS镜像的工具:

    yum -y install febootstrap

    第四 制作CentOS镜像文件centos6-image目录

    febootstrap -i bash -i wget -i yum -i iputils -i iproute -i man -i vim-minimal -i openssh-server -i openssh-clients centos6 centos6-image http://mirrors.aliyun.com/centos/6/os/x86_64/

    第五制作Docker镜像,镜像名字是centos6-base, 最后的点是必须要的

    cd centos6-image && docker build -t centos6-base .
    cd centos6-image && tar -c .|docker import - centos6-base  【测试有效】
     

    第六制作可以ssh登陆的Docker镜像,名字是centos6-ssh

    docker build -t centos6-ssh https://git.oschina.net/feedao/Docker_shell/raw/start/Dockerfile

    经过前面的六个步骤,一个可以登陆的本地docker镜像就制作好了。

    用户名是:root,密码是:123456

    体验步骤:

    创建容器:

    docker run -d -p 127.0.0.1:33301:22 centos6-ssh

    ssh登陆容器:

    ssh root@127.0.0.1 -p 33301

    输入密码后就可以开始折腾了。

    通过授信无密码登陆

    依赖于centos6-ssh镜像,制作第三个自动授信的镜像centos-newssh。

    方法如下:

    curl https://git.oschina.net/feedao/Docker_shell/raw/start/Docker-centos-autossh.sh | sh

    一个命令就行了,这条命令会创建一个新镜像centos-newssh

    开始体验,现在不需要输入root密码了:

    docker run -d -p 127.0.0.1:33306:22 -m 256M centos-newssh
    ssh root@127.0.0.1 -p 33306 "echo $LANG;ifconfig"
     
    如果不想第一次连接的时候输入yes,确认连接,可以使用下面的命令:
    ssh -o StrictHostKeyChecking=no root@127.0.0.1 -p 33306 "echo $LANG;ifconfig"
     
    体验完了,我们来分析下
    https://git.oschina.net/feedao/Docker_shell/raw/start/Docker-centos-autossh.sh
    #!/bin/sh
    [ ! -d /root/.ssh ] && mkdir -p /root/.ssh
    ssh-keygen -q -N "" -t dsa -f /root/.ssh/id_dsa
    KEY_PUB=`cat /root/.ssh/id_dsa.pub`
    [ ! -d /root/docker-temp ] && mkdir /root/docker-temp
    cd /root/docker-temp
    cat >/root/docker-temp/Dockerfile <<EOF
    #Dockerfile
    FROM centos6-ssh
    MAINTAINER feedao <feedao@163.com>
    EOF
    echo "RUN echo "$KEY_PUB" > /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys " >>Dockerfile
    cd /root && cat /root/docker-temp/Dockerfile | docker build -t centos-newssh -
    

    脚本内容比较简单,就是生成新的秘钥和公钥

    ssh-keygen -q -N "" -t dsa -f /root/.ssh/id_dsa
     
    然后把公钥自动加到Docker容器中,这里是修改Dockerfile:
    echo "RUN echo "$KEY_PUB" > /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys " >>Dockerfile
     
    最后创建新的镜像:
    cd /root && cat /root/docker-temp/Dockerfile | docker build -t centos-newssh -
     
    你可以把/root/docker-temp文件夹删除
    rm -rf /root/docker-temp
     
  • 相关阅读:
    scrum
    control.begininvoke
    ChangeBrowsePosition Method
    常见linux命令(表格分类)
    Python 之优先级排序
    Python 之分辨双胞胎:copy(浅拷贝)与 deepcopy(深拷贝)
    字符编码学习总结
    Python 多继承方式及顺序
    AttributeError: module 'datetime' has no attribute 'now' ------解决方法之一
    Python 模块定义、导入、优化详解
  • 原文地址:https://www.cnblogs.com/zhengah/p/4933700.html
Copyright © 2011-2022 走看看