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 [email protected]

expect "password:"

send "123456\r"

interact

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

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

猜你喜欢

转载自www.cnblogs.com/telegram/p/10912849.html