在Docker中使用cp命令复制多个文件

3

我希望将多个文件从Ubuntu传输到Docker容器中。对于单个文件,可以使用以下命令:

docker cp file_name CONTAINER:path/

但是我无法一次上传多个文件。我尝试了以下命令,但目前还没有成功:

docker cp {file1,file2} CONTAINER:path/
docker cp [file1,file2] CONTAINER:path/
docker cp ["file1","file2"] CONTAINER:path/

所有以上命令都返回“没有这个文件或目录”的错误。

2
在文档https://docs.docker.com/engine/reference/commandline/cp/中,他们说“SRC_PATH指定一个文件”或“SRC_PATH指定一个目录”。也许把所有文件放在一个文件夹里然后复制这个文件夹是个好办法? - user2915097
文件夹移动正常工作。但不需要每次上传整个文件夹。是否有任何命令可以选择性地上传多个文件? - Gaurav
据我所知,目前为止,docker cp 还缺少一些改进。 - user2915097
请参见https://dev59.com/nYrda4cB1Zd3GeqPKEav?rq=1 - user2915097
和 https://github.com/WhisperingChaos/dkrcp - user2915097
你可以像这样使用netcat:`我最近用的一个技巧是使用netcat "nc"来避免重新启动容器:在容器中:nc -l 10101 > thefile.bin 在主机上:cat thefile.bin | nc 172.0.2.3 10101 (其中172.0.2.3是容器IP,10101是您选择的随机端口)` 来自 https://github.com/docker/docker/issues/905 - user2915097
1个回答

4
您可以使用以下内容:
$ tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i foo tar Cxf DEST_PATH -

使用-作为SRC_PATH将STDIN的内容作为tar归档文件流式传输。该命令将tar的内容提取到容器文件系统中的DEST_PATH。在这种情况下,DEST_PATH必须指定一个目录。使用-作为DEST_PATH将资源的内容作为tar归档文件流式传输到STDOUT。
您可以在此处阅读更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接