Docker在Debian中的备份与恢复
一、备份范围与准备
二、按对象备份与恢复
docker save -o my-image.tar my-image:tagdocker load -i my-image.tardocker cp <容器名或ID>:/var/www/html /host/backup/htmldocker cp /host/backup/html <容器名或ID>:/var/www/htmldocker volume lsdocker volume inspect <卷名> | grep Mountpoint(得到宿主机路径)sudo cp -a <Mountpoint> /host/backup/vol_<卷名>sudo cp -a /host/backup/vol_<卷名> <Mountpoint>docker run -v /host/backup/vol_<卷名>:/var/lib/mysql ...cp docker-compose.yml /host/backup/sudo cp /etc/docker/daemon.json /host/backup/(如有)sudo tar -czvf docker_backup.tar.gz -C /var/lib/docker .sudo tar -xzvf docker_backup.tar.gz -C /var/lib/docker三、自动化与注意事项
#!/usr/bin/env bash
set -e
BACKUP_DIR="/host/backup/$(date +%F_%H-%M-%S)"
mkdir -p "$BACKUP_DIR"
# 1) 镜像
docker images --format '{{.Repository}}:{{.Tag}}' | while IFS= read -r img; do
[[ -z "$img" ]] && continue
docker save -o "$BACKUP_DIR/$(echo "$img" | tr '/:' '_').tar" "$img"
done
# 2) 卷
docker volume ls -q | while IFS= read -r vol; do
mp=$(docker volume inspect -f '{{.Mountpoint}}' "$vol")
[[ -z "$mp" ]] && continue
sudo cp -a "$mp" "$BACKUP_DIR/vol_$vol"
done
# 3) 容器可写层(按需选择路径)
docker ps -q | while IFS= read -r cid; do
name=$(docker inspect -f '{{.Name}}' "$cid" | sed 's,^/,,')
docker cp "$cid:/var/www/html" "$BACKUP_DIR/${name}_html" 2>/dev/null || true
done
# 4) 配置
sudo cp /etc/docker/daemon.json "$BACKUP_DIR/" 2>/dev/null || true
cp docker-compose.yml "$BACKUP_DIR/" 2>/dev/null || true
echo "Backup finished: $BACKUP_DIR"
四、进阶 热迁移与近零停机
criu check),确保内核与 Docker 版本满足要求。