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
     
  • 相关阅读:
    ros 编译指定包
    TCP_IP Sockets编程C语言实现第2版 源码下载
    python 文件,文件夹,路径操作
    python 导入包
    ImportError: No module named rospy
    python安装simplejson
    EditPlus 中添加 Win32 ASM 语法支持
    程序设计学习与试验系统下载
    masm for windows2015 下载安装
    dosbox+masm汇编环境的安装和使用
  • 原文地址:https://www.cnblogs.com/zhengah/p/4933700.html
Copyright © 2011-2022 走看看