如何将数据从 docker 卷复制到主机?

问题描述 投票:0回答:3

我创建了一个 docker 卷“hello”,它包含一些数据。

如何将数据复制到host

第一:

kerydeMacBook-Pro:~ hu$ docker volume create --name hello
hello

检查:

kerydeMacBook-Pro:~ hu$ docker volume ls
DRIVER              VOLUME NAME
local               hello

音量“你好”检查

kerydeMacBook-Pro:~ hu$  docker volume inspect hello
[
    {
        "Name": "hello",
        "Driver": "local",
        "Mountpoint": "/mnt/sda1/var/lib/docker/volumes/hello/_data"
    }
]

如何将卷“hello”上的数据复制到主机?

我试过了:

kerydeMacBook-Pro:~ hu$  docker cp hello:/mnt/sda1/var/lib/docker/volumes/hello/_data /Users/hu/Desktop/12
Error response from daemon: no such id: hello

它没有按预期工作!

谁能帮帮我?

docker boot2docker docker-volume
3个回答
46
投票

要将数据从 volume 复制到 host,请使用已安装该卷的临时容器。

CID=$(docker run -d -v hello:/hello busybox true)
docker cp $CID:/hello ./

将目录从host复制到volume

cd local_dir
docker cp . $CID:/hello/

然后清理临时容器

docker rm $CID

0
投票

在将操作系统升级到新版本时,除了安装旧机外,还要安装新版本并同时安装 SSD。高清,我刚刚将卷从一个系统转移到另一个系统 主机级别的简单文件副本。该系统是 Linux Mint,它对任何基于 *nix 的机器都应该是一样的。抱歉,我不知道 Windows。

运行新系统时:

  • 创建 Docker 卷
  • 挂载旧安装的磁盘
  • 根据名称找到要复制的卷(在
    /var/lib/docker/volumes/
    下)
  • 复制(
    copy -a -r
    )他们的
    _data
    文件夹内容到他们的对应
  • 享受

当然,所有这些操作都必须以 root 身份完成。

在新系统上启动 Docker Compose 堆栈后,我发现那里的所有数据(包括 PostgreSQL DB)与旧系统中的完全一样。


0
投票

您不需要运行任何额外的容器,您可以使用现有容器执行此任务。

从容器复制文件到本地路径

docker cp CONTAINER:/var/logs/ /tmp/app_logs

复制本地文件到容器中

docker cp ./some_file CONTAINER:/work
© www.soinside.com 2019 - 2024. All rights reserved.