在 CentOS 上备份 Docker,通常分为备份镜像、容器、数据卷、以及 Docker 相关配置几个部分。下面按常见场景给你一个完整、实用的方案。
docker images
docker save -o nginx.tar nginx:latest
docker save -o all_images.tar $(docker images -q)
✅ 恢复镜像:
docker load -i nginx.tar
⚠️ 一般不建议直接备份容器,而是重新用镜像 + 数据卷恢复
docker commit my_container my_container_backup
docker save -o my_container_backup.tar my_container_backup
docker volume ls
假设数据卷名是 mysql_data:
docker run --rm \
-v mysql_data:/volume \
-v /backup:/backup \
busybox \
tar cvf /backup/mysql_data.tar /volume
/backup是宿主机目录,可改成你自己的路径
docker run --rm \
-v mysql_data:/volume \
-v /backup:/backup \
busybox \
tar xvf /backup/mysql_data.tar -C /
cp /etc/docker/daemon.json /backup/daemon.json.bak
cp -r /etc/systemd/system/docker.service.d /backup/
如果你用 docker-compose:
tar czvf my_project.tar.gz my_compose_project/
包括:
docker-compose.yml.env#!/bin/bash
BACKUP_DIR=/backup/docker_$(date +%F)
mkdir -p $BACKUP_DIR
# 备份所有镜像
docker save -o $BACKUP_DIR/images.tar $(docker images -q)
# 备份 compose 项目
cp -r /opt/my_project $BACKUP_DIR/
# 备份配置
cp /etc/docker/daemon.json $BACKUP_DIR/
echo "Docker backup done: $BACKUP_DIR"
chmod +x backup_docker.sh
./backup_docker.sh
docker savedaemon.json 必备份如果你能告诉我:
我可以给你更针对性的备份方案。