从Docker容器复制数据和向Docker容器复制数据

时间:2017-05-22 18:14:56

标签: docker dockerfile docker-swarm docker-container

我的系统上运行了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/

但是上面的命令没有说它不受支持。

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

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

4 个答案:

答案 0 :(得分:1)

您应该使用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

希望有所帮助

答案 1 :(得分:0)

ch[i]命令仅适用于容器和主机之间,而不适用于两个容器之间。要使用它,您需要在主机上有副本。

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

docker cp

如果两个容器都包含tar,您也可以滥用管道和docker run --name container-1 -v vishnu-source:/usr/local/nginx/vishnu/ ... docker run --name container-2 -v vishnu-source:/home/smadmin/vishnusource/ ... 在两者之间移动文件(您可以将第一个命令中的docker exec更改为vishtest.txt以仅复制该文件) :

.

答案 2 :(得分:0)

这是我使用一个命令在docker之间复制文件夹的方法:

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

答案 3 :(得分:0)

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

以root身份或在脚本内:

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

随便:

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