• docker 环境 部署 centos7镜像 并配置免秘登陆


    基本原理:
    一、通过docker commit 命令生成新的带有sshd的镜像,通过新的镜像映射端口到宿主机
    二、宿主机通过expect函数结合ssh -p 给定的端口 免秘登陆到 centos7 容器中
    ----------------------------------------------------------------------------------------
    基本流程:
    安装sshd服务   提交新镜像  启动新容器  宿主机expect脚本
    -----------------------------------------------------------------------------------------
    1、查找镜像源
    $ docker search centos
    2、下载镜像
    docker pull centos:7
    3、查看已下载的镜像
    $ docker images

    4.启动容器 并进入

    $ docker run -itd centos /bin/bash

    查看容器: docker ps

    $docker attach containerID

    ------------------------------------------

    配置ssh服务:

    a、修改Centos root密码

    passwd root 

    b、安装openssh
    yum install openssh-server -y
    c、生成公钥、私钥
    [root@378ab88a06c8 /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
     

    [root@378ab88a06c8 /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key

    [root@378ab88a06c8 /]# ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key

    ---------------------------------

    提交新的镜像,包含有sshd服务

    a、提交新的镜像之前,安全退出旧的镜像容器,并关闭容器

    ctrl+p+q 安全退出容器,此命令会退出当前容器,但是容器不停止

    docker stop containerid //彻底关闭容器

    b、提交新的镜像

    #提交当前容器到镜像: docker commit <容器ID> <NAME:VERSION>
    $ docker commit bce6d9a692b2 centos_me:v1.0
    docker images 查看新的镜像
    c、启动新的容器
    $ docker run  -it --name mycentos7  -p 5001:22 centos_me:v1
    备注:1、“-p 5001:22” 是将容器的ssh端口22映射都宿主主机的5001端口上
       2、‘mycentos7’重命名容器名
    进入容器  /usr/sbin/sshd -D &       // 后台运行ssd守护进程,此时22端口一直打开,并且映射到了宿主机的5001端口

    ---------------------------------------------------------------

    宿主机配置免秘登陆 结合expect函数和ssh命令登陆到容器中

    expect 需要先进行安装,才可以使用:

    推荐直接用yum 安装即可,yum search expect 找到合适的版本:红线中的两个版本都可以,二选一即可

    yum install expect-devel.x86_64

    ---------------------------------------------

    宿主机编写expect脚本自动填充密码,//此处注意 expect 脚本不同于sh脚本不能使用  sh 命令执行,只能通过添加执行权限./xxxx.exp 执行

    脚本内容

    vi ssh_centos7.exp

    -------------------------------------

    #!/usr/local/bin/expect  //这里根据你本地环境的expect命令所在目录填写

    set timeout 30

    spawn ssh -p 5001 root@172.18.199.33

    expect "password:"

    send "123456 "

    interact

    -----------------------------

    chmod +x ssh_centos7.exp       ./ssh_centos7.exp 运行进入容器

  • 相关阅读:
    Java 处理cookie的方法
    HTML5的新标签-整体布局
    Git学习文档——文件状态git status
    Css中路径data用法
    python2
    hangfire
    Nginx系列~Nginx服务启动不了
    git形成本地仓库并从远处url拉取
    orcal和sql server中的字符串查找函数
    Eclipse 修改项目名称
  • 原文地址:https://www.cnblogs.com/telegram/p/10912849.html
Copyright © 2020-2023  润新知