Bash 从Crontab备份Docker映像
我正在寻找一种简单的方法将现有docker实例备份到相应的tar归档中,我编写了以下脚本。我知道Docker实例应该简单地从Dockerfile中销毁和重新创建。但是,我有一些用户修改正在运行的实例,而不跟踪所采取的步骤。我想通过支持他们的工作来支持他们的努力。对如何改进该战略有何建议?是否有明确的方法将正在运行的实例导出到DockerfileBash 从Crontab备份Docker映像,bash,docker,cron,Bash,Docker,Cron,我正在寻找一种简单的方法将现有docker实例备份到相应的tar归档中,我编写了以下脚本。我知道Docker实例应该简单地从Dockerfile中销毁和重新创建。但是,我有一些用户修改正在运行的实例,而不跟踪所采取的步骤。我想通过支持他们的工作来支持他们的努力。对如何改进该战略有何建议?是否有明确的方法将正在运行的实例导出到Dockerfile 这绝对不是管理docker基础设施的方法。映像应该是只在生成时修改的可部署生成工件。您说过它们修改正在运行的实例,它们也修改映像吗?有几个问题:doc
这绝对不是管理docker基础设施的方法。映像应该是只在生成时修改的可部署生成工件。您说过它们修改正在运行的实例,它们也修改映像吗?有几个问题:
docker rmi
无法成功删除正在运行的容器的基础映像;不需要停止容器来触发其上的docker commit
;最后,正如@jordanm所指出的,这个工作流程听起来不地道!例如,参见本参考文件,其中明确建议不要使用docker commit
(第5点):
#!/bin/bash
IMAGETAG=$(date +"%Y")
TARDATE=$(date +"%m%Y")
SAVEDIR=/data/.docker_bak
for IMAGENAME in $(docker ps --format '{{.Names}}');
do
docker rmi ${IMAGENAME}:${IMAGETAG}
docker stop ${IMAGENAME}
sleep 1
docker commit ${IMAGENAME} ${IMAGENAME}:${IMAGETAG}
sleep 1
docker start ${IMAGENAME}
docker save -o ${SAVEDIR}/${IMAGENAME}_${TARDATE}.tar ${IMAGENAME}:${IMAGETAG}
done