sshpass 为非交互式的密码验证工具并且可以执行shell命令

docker-compose为docker的命令行管理工具,通过配置yaml文件实现docker容器的配置及无缝更新等操作,与k8s类似

架构思想

A机器上的sshpass非交互式操控B机器的docker-compose来更新不同目录下的不同项目

#部署
#A安装sshpass
apt-get install -y sshpass
#B安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#验证
docker-compose -version
#A:编写sshpass脚本
vim sshpass.sh

#!/bin/sh
image=$1
application=$2
sshpass -p '密码' ssh -p端口 用户@ip 'echo '$image' > /home/root1/collages/compose/images.txt && sh /home/root1/collages/compose/updata.sh '$application''
B:
#yaml文件举例
vim docker-compose.yaml
 
version: "2"
services:
  apartment:
    image: 镜像名
    ports:
      - "1000:1000"
    volumes:
      - "/home/root1/collages/apartment/config:/work/config"
    restart: always


#文件树
root1@root1-virtual-machine:~/collages/compose$ tree 
.
├── apartment
│   └── docker-compose.yaml
├── classspace
│   └── docker-compose.yaml
├── coresrv
│   └── docker-compose.yaml
└── yx
    └── docker-compose.yaml

#更新脚本
vim updata.sh

#!/bin/bash
application=$1
#新镜像
image=`cat /home/root1/collages/compose/images.txt`
echo $image
#老镜像
oldimage=`cat /home/root1/collages/compose/$application/docker-compose.yaml | grep image | awk '{print $2}'`
#更新镜像
echo $oldimage
sed -i "s;${oldimage};${image};g" /home/root1/collages/compose/$application/docker-compose.yaml
echo $?
#启动
/usr/local/bin/docker-compose -f /home/root1/collages/compose/$application/docker-compose.yaml up -d

#测试

docker ps

###注:如果提示普通用户无法使用docker命令 将其加入docker组中即可,需要重新开启命令窗口刷新环境变量

sudo gpasswd -a root1 docker
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐