将数据从 Docker 个容器复制到 Docker 个容器

Copying data from and to Docker containers

我的系统上有 2 个 docker 个容器 运行。

我想从我的主机系统本身将数据从一个容器复制到另一个容器。

我知道要将数据从容器复制到主机,我们必须使用

docker cp <Source path> <container Id>:path in container

现在我想将数据直接从一个容器复制到另一个容器,有什么办法吗??

我试过这样做。

docker cp <container-1>:/usr/local/nginx/vishnu/vishtest.txt <container-2>:/home/smadmin/vishnusource/

但是上面的命令失败了,说它不受支持。

我不应该将数据复制到我的本地机器,这是我的要求。

任何人有这样做的想法,提前致谢?

docker cp命令只在容器和宿主机之间有效,在两个容器之间无效。要使用它,您需要在主机上有一个副本。

如果两个容器应该保持同步,理想的解决方案是将数据存储在一个卷中:

docker run --name container-1 -v vishnu-source:/usr/local/nginx/vishnu/ ...
docker run --name container-2 -v vishnu-source:/home/smadmin/vishnusource/ ...

如果两个容器都包含 tar,您也可以滥用管道和 docker exec 在两者之间移动文件(您可以将第一个命令中的 . 更改为 vishtest.txt 只复制一个文件):

docker exec container-1 tar -cC /usr/local/nginx/vishnu . \
| docker exec -i container-2 tar -xC /home/smadmin/vishnusource/

你应该使用 volume

首先,创建一个卷:

docker volume create --name shared

然后,运行 个这样的容器:

docker run -v shared:/shared-folder <container-1>
docker run -v shared:/shared-folder <container-2>

这样,/shared-folder 将在这两个容器之间同步。

了解更多信息 here

希望对您有所帮助

这是我使用单个命令在码头工人之间复制 文件夹 的方法:

docker exec container-1 tar -c -f- folder/path/from/root | \
docker exec -i container-2 tar -x -f-

使用管道也是一个简单的解决方案。

作为 root 或在脚本中:

docker cp container-1:/data-path/. - | docker cp - container-2:/data-path

作为sudoer:

sudo docker cp container-1:/data-path/. - | (sudo docker cp - container-2:/data-path)