实现原理
1编写shell脚本实现拉取镜像并更新容器
2在节点上设置定时任务,定时执行该脚本
3当镜像更新时,很快便能同步到所有节点
shell脚本内容
#!/bin/bash
#logger部分也可省略
image="xx.com/prod/myimage:latest"
docker_update=<code>docker pull $image</code>
logger "x.sh : start auto update docker ..."
if [[ $docker_update =~ "Downloaded newer image" ]]
then
logger "x.sh : $t test docker_update time "
docker stop xx && docker rm xx
docker run -it --net=host --restart=always --name xx -e xx
if [ $? -eq 0 ]
then
t=<code>date +%y%m%d-%H:%M:%S</code>
echo $t ok >> /x/x.log
echo "x.sh : latest update finish "
logger "x.sh : $t latest update finish "
else
t=<code>date +%y%m%d-%H:%M:%S</code>
echo $t bad >> /x/x.log
echo "x.sh : latest update finish "
logger " $t x.sh latest update bad "
fi
else
echo "x.sh : latest is new "
logger "x.sh : $t latest is new"
exit
fi
定时任务
* * * * * sh x.sh 2>&1
特别说明
节点数较多、或者镜像体积较大,首次更新时,宽带可能会占用很高
后期尽量把基础镜像尽量做全,减小每次更新新增内容体积,避免大量节点更新时跑满带宽