Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从Crontab备份Docker映像_Bash_Docker_Cron - Fatal编程技术网

Bash 从Crontab备份Docker映像

Bash 从Crontab备份Docker映像,bash,docker,cron,Bash,Docker,Cron,我正在寻找一种简单的方法将现有docker实例备份到相应的tar归档中,我编写了以下脚本。我知道Docker实例应该简单地从Dockerfile中销毁和重新创建。但是,我有一些用户修改正在运行的实例,而不跟踪所采取的步骤。我想通过支持他们的工作来支持他们的努力。对如何改进该战略有何建议?是否有明确的方法将正在运行的实例导出到Dockerfile 这绝对不是管理docker基础设施的方法。映像应该是只在生成时修改的可部署生成工件。您说过它们修改正在运行的实例,它们也修改映像吗?有几个问题:doc

我正在寻找一种简单的方法将现有docker实例备份到相应的tar归档中,我编写了以下脚本。我知道Docker实例应该简单地从Dockerfile中销毁和重新创建。但是,我有一些用户修改正在运行的实例,而不跟踪所采取的步骤。我想通过支持他们的工作来支持他们的努力。对如何改进该战略有何建议?是否有明确的方法将正在运行的实例导出到Dockerfile



这绝对不是管理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