Docker数据卷数据的复制和迁移
方法 1:使用 docker cp 命令
docker cp 命令可以直接从容器中复制文件到主机。
步骤:
-
找到挂载了数据卷的容器名称或 ID:
docker ps -
使用
docker cp命令将数据从容器中复制到主机:docker cp <container_name>:<container_path> <host_path>
示例:
假设数据卷挂载在容器的 /var/lib/mysql 目录,想将其拷贝到主机的 /backup 目录:
docker cp my_database:/var/lib/mysql /backup
方法 2:直接挂载数据卷到另一个容器并拷贝
可以启动一个临时容器,挂载需要的卷,然后从该容器中拷贝数据。
步骤:
- 启动一个临时容器,挂载目标数据卷:
docker run --rm -v <volume_name>:<mount_path> -v <host_path>:<backup_path> busybox \
cp -r <mount_path>/* <backup_path>
示例:
假设数据卷名为 my_volume,挂载到 /data,并将数据拷贝到主机的 /backup:
docker run --rm -v my_volume:/data -v /backup:/backup busybox \
cp -r /data/* /backup
方法 3:直接从数据卷目录中复制(Linux 主机)
在 Linux 上,Docker 数据卷通常存储在 /var/lib/docker/volumes 目录下。可以直接找到对应的卷目录并复制数据。
步骤:
-
找到数据卷的路径:
docker volume inspect <volume_name>输出示例:
[
{
"Name": "my_volume",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/my_volume/_data",
"Scope": "local"
}
]数据实际存储在
Mountpoint指定的路径(如/var/lib/docker/volumes/my_volume/_data)。 -
直接复制数据到主机:
cp -r /var/lib/docker/volumes/my_volume/_data /backup