Docker 导出容器到 docker-compose.yml 文件
问题:docker-compose.yml 文件丢失
解决办法:docker的事用docker解决
背景:很多容器都是docker run运行的,想要转换为docker-compose.yml
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}/"*/; do dir_name="$(basename "${dir}")" if [[ "${dir_name}" < "${THREE_DAYS_AGO_DATE}" ]]; then echo "删除过时的备份文件夹: ${dir_name}" rm -rf "${dir}" fi done # 获取正在运行的容器列表 RunningContainers=($(docker ps --format "{{ .Names }}")) # 遍历容器列表,为每个容器创建一个备份文件 for container_name in "${RunningContainers[@]}"; do BACKUP_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://blog.csdn.net/wangrui1573/article/details/133122655
标签:容器,compose,run,name,yml,docker,BACKUP,Docker From: https://www.cnblogs.com/1285026182YUAN/p/18002568