备份docker

一、备份步骤:


1、停止容器
sudo docker stop a9b763ee82a2

2、导出容器的文件系统
sudo docker export -o arl_web.tar a9b763ee82a2

3、获取镜像 ID
sudo docker images

4、导出 Docker 镜像
sudo docker save -o tophant_arl_v2.6.2.tar tophant/arl:v2.6.2

5、传输文件到新机器
scp arl_web.tar user@new_machine:/path/to/destination
scp tophant_arl_v2.6.2.tar user@new_machine:/path/to/destination

6、 导入 Docker 镜像
sudo docker load -i tophant_arl_v2.6.2.tar

7、 导入 Docker 容器
sudo docker import arl_web.tar new_arl_web_image

8、新镜像运行容器
sudo docker run -d --name new_arl_web new_arl_web_image

9、启动并验证容器
sudo docker ps

二、实验

1、备份images

└─$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nemo v2 9c06d79c7077 3 months ago 1.62GB
tophant/arl latest 826db31cea99 4 months ago 1.19GB
tophant/arl v2.6.2 826db31cea99 4 months ago 1.19GB
ubuntu 22.04 437ec753bef3 4 months ago 77.9MB
rabbitmq 3-management-alpine f4827796695c 5 months ago 180MB
rabbitmq 3.13.1-management-alpine f4827796695c 5 months ago 180MB
mysql 5.7 5107333e08a8 8 months ago 501MB
mongo 4.0.27 e305b5d51c0a 2 years ago 430MB

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker save -o ubuntu_22.04.tar ubuntu/22.04
Error response from daemon: No such image: ubuntu/22.04

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker save -o ubuntu_22.04.tar ubuntu:22.04

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker save -o rabbitmq_3-management-alpine.tar rabbitmq:3-management-alpine

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker save -o rabbitmq_3.13.1-management-alpine.tar rabbitmq:3.13.1-management-alpine

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker save -o mysql_5.7.tar mysql:5.7

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker save -o mongo_4.0.27.tar mongo:4.0.27

2、备份docker 容器

└─$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
caacf6e8fce1 rabbitmq:3.13.1-management-alpine "docker-entrypoint.s…" 3 months ago Up 41 minutes 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 15691-15692/tcp, 25672/tcp arl_rabbitmq
979ff66176fa mongo:4.0.27 "docker-entrypoint.s…" 3 months ago Up 41 minutes 27017/tcp arl_mongodb
d4480e41f1b2 mysql:5.7 "docker-entrypoint.s…" 3 months ago Up 41 minutes 3306/tcp, 33060/tcp mysql

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker stop caacf6e8fce1
caacf6e8fce1

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker export -o arl_rabbitmq_containner.tar caacf6e8fce1

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker stop 979ff66176fa
979ff66176fa

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker export -o arl_mongodb_containner.tar 979ff66176fa

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker stop d4480e41f1b2
d4480e41f1b2

┌──(kali㉿kali)-[~/ARL_BACK]
└─$ sudo docker export -o arl_mysql_containner.tar d4480e41f1b2

 三、自动化备份

#!/bin/bash

# 获取所有镜像的列表
images=$(docker images --format "{{.Repository}}:{{.Tag}}")

# 创建备份目录
backup_dir="docker_images_backup"
mkdir -p "$backup_dir"

# 遍历所有镜像并保存到备份目录
for image in $images; do
    echo "Backing up $image"
    # 使用日期时间作为文件名的一部分,以避免重复
    timestamp=$(date +"%Y%m%d_%H%M%S")
    backup_file="$backup_dir/$(echo $image | sed 's/:/-/g')_$timestamp.tar"
    docker save -o "$backup_file" "$image"
done

echo "Backup completed. All images are saved in the $backup_dir directory."

 

posted @ 2024-08-17 23:04  狂奔的狼  阅读(4)  评论(0编辑  收藏  举报