You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过docker cp从Docker容器复制指定.txt文件到主机?

解决Docker容器中复制特定类型文件到主机的问题

你遇到的问题很常见——docker cp本身不支持直接使用通配符来匹配文件类型,原因是命令里的*.txt会被主机的shell先解析,而不是传给容器内部处理。如果主机当前目录下没有.txt文件,shell就会把*.txt原样传给docker cp,自然找不到容器里对应的文件。

这里给你几个可行的解决方案:

方案1:用docker exec配合tar打包传输(推荐)

这个方法效率最高,尤其是文件数量较多的时候:

sudo docker exec env1_1 tar -czf - /path/*.txt | tar -xzf - -C .
  • 左边的docker exec会在容器内部把目标路径下的所有.txt文件打包成一个压缩包(通过-输出到标准输出)
  • 管道右边的tar命令会把这个压缩包解压到主机的当前目录(-C .指定目标路径)

如果不需要压缩,也可以用未压缩的格式,速度可能更快:

sudo docker exec env1_1 tar -cf - /path/*.txt | tar -xf - -C .

方案2:循环逐个复制文件

如果文件数量不多,也可以用shell循环逐个复制:

sudo docker exec env1_1 ls /path/*.txt | while read file_path; do
    sudo docker cp env1_1:"$file_path" .
done

这个命令会先让容器列出目标路径下的所有.txt文件,然后逐个通过docker cp复制到主机当前目录。

方案3:提前挂载Volume(适合长期场景)

如果以后经常需要在容器和主机之间同步这类文件,可以在启动容器时就挂载主机目录作为Volume:

sudo docker run -v /host/path:/container/path ... env1_1

这样容器里/container/path下的.txt文件会自动同步到主机的/host/path目录,不需要手动复制。

内容的提问来源于stack exchange,提问作者Jishan

火山引擎 最新活动