[英]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
将在这两个容器之间同步。
在此处阅读更多相关信息
希望能帮助到你
这是我使用单个命令在 dockers 之间复制文件夹的方法:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.