当前位置:首页 > 编程笔记 > 正文
已解决

将运行的容器,导出为docker-compose.yml 文件并循环备份

来自网友在路上 161861提问 提问时间:2023-09-24 13:48:17阅读次数: 61

最佳答案 问答题库618位专家为你答疑解惑

环境:群晖+docker
问题:docker-compose.yml 文件丢失

解决办法:docker的事用docker解决

背景:很多容器都是docker run运行的,想要转换为docker-compose.yml

文章目录

    • 1.测试备份:
    • 2.自动化脚本:


1.测试备份:

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dockerproxy.com/red5d/docker-autocompose:latest 容器名称或ID

2.自动化脚本:

编写自动化脚本,每天循环备份,默认最近3天

#!/bin/bash# https://github.com/Red5d/docker-autocompose# 定义备份根目录
BACKUP_ROOT_DIR="/volume3/docker/backup"
EXPORT_DATE="$(date +%Y-%m-%d)"
TODAY_DIR="${BACKUP_ROOT_DIR}/${EXPORT_DATE}"# 创建当天日期的文件夹
mkdir -p "${TODAY_DIR}"# 计算3天前的日期
THREE_DAYS_AGO_DATE="$(date --date='2 days ago' +%Y-%m-%d)"# 删除3天前及其之前的所有日期的文件夹
for dir in "${BACKUP_ROOT_DIR}/"*/; dodir_name="$(basename "${dir}")"if [[ "${dir_name}" < "${THREE_DAYS_AGO_DATE}" ]]; thenecho "删除过时的备份文件夹: ${dir_name}"rm -rf "${dir}"fi
done# 获取正在运行的容器列表
RunningContainers=($(docker ps --format "{{ .Names }}"))# 遍历容器列表,为每个容器创建一个备份文件
for container_name in "${RunningContainers[@]}"; doBACKUP_FILE="${TODAY_DIR}/docker-autocompose_${EXPORT_DATE}_${container_name}.yaml"echo "正在导出容器配置到 ${BACKUP_FILE},容器名称: ${container_name}"# 创建 Docker Compose 文件并添加注释echo "# 由 Red5d/docker-autocompose 生成的 docker-compose 文件" > "${BACKUP_FILE}"echo "# 包含的容器: ${container_name}" >> "${BACKUP_FILE}"# 导出单个容器的配置到文件docker run --rm -v /var/run/docker.sock:/var/run/docker.sock dockerproxy.com/red5d/docker-autocompose:latest "${container_name}" >> "${BACKUP_FILE}"
done

效果:

在这里插入图片描述

在这里插入图片描述

参考引用:https://github.com/Red5d/docker-autocompose

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"将运行的容器,导出为docker-compose.yml 文件并循环备份":http://eshow365.cn/6-12809-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!