docker中某个容器使用的镜像时常更新,要运行最新的镜像需要定时更新,写个shell脚本包含停止删除容器,删除镜像,拉取最新镜像并重启容器,定时执行这个脚本就可以了。
这里以镜像 wcjiang/reference:latest
为例:
#!/bin/bash
echo "$(date +"%Y-%m-%d %H:%M:%S") - docker stop && rm reference"
docker stop reference
docker rm reference
echo "$(date +"%Y-%m-%d %H:%M:%S") - docker image rm wcjiang/reference:latest"
docker image rm wcjiang/reference:latest
echo "$(date +"%Y-%m-%d %H:%M:%S") - docker run --name reference --rm -d -p 9667:3000 wcjiang/reference:latest"
docker run --name reference -d -p 9667:3000 wcjiang/reference:latest
docker ps | grep reference
echo "$(date +"%Y-%m-%d %H:%M:%S") - update docker image done."
crontab定时脚本:
# 每周一3点
0 3 * * 1 bash /root/shell/doc_auto_update.sh >> /root/shell/logs/doc-update-$(date +\%Y).log 2>&1
单个容器的话这样是可以的,但如果要同时管理多个容器的自动更新,这样用脚本 + 定时任务来更新容器显然是繁琐的,更优雅的办法应该是使用这个叫watchtower的工具:containrrr/watchtower