将数据从 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)
我的系统上有 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)