You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Docker容器中的最新文件复制到本地机器

如何将Docker容器目录中的最新文件复制到本地

单行命令直接完成复制

可以通过docker exec在容器内执行命令定位最新文件的绝对路径,再将结果传给docker cp完成复制。假设你的容器名为my-container,容器内目标目录是/app/logs,本地要保存到./local-logs目录,直接运行:

docker cp $(docker exec my-container bash -c "ls -t /app/logs | head -n1 | xargs realpath") ./local-logs/
  • docker exec my-container bash -c "...": 在容器内启动bash执行后续命令
  • ls -t /app/logs: 按修改时间倒序列出目录文件,最新文件排在最前
  • head -n1: 提取第一行,即最新文件名
  • xargs realpath: 将文件名转换为绝对路径,避免相对路径导致docker cp报错

处理特殊场景(含空格文件名、子目录)

如果目标目录存在子目录,或文件名包含空格,上面的ls方式会失效,改用更稳定的find命令:

docker cp $(docker exec my-container bash -c "find /app/logs -maxdepth 1 -type f -printf '%T@ %p\n' | sort -nr | head -n1 | cut -d' ' -f2-") ./local-logs/
  • find /app/logs -maxdepth 1 -type f: 仅查找目标目录下的文件(不遍历子目录)
  • -printf '%T@ %p\n': 输出文件的精确修改时间戳和完整路径
  • sort -nr: 按时间戳倒序排序,确保最新文件排在首位
  • cut -d' ' -f2-: 剔除时间戳部分,只保留文件路径

分步操作(先确认文件再复制)

如果想先验证找到的文件路径是否正确,可以分两步操作:

  1. 获取最新文件路径:
    docker exec my-container bash -c "find /app/logs -maxdepth 1 -type f -printf '%T@ %p\n' | sort -nr | head -n1 | cut -d' ' -f2-"
    
  2. 确认路径无误后,手动执行复制:
    docker cp my-container:/path/to/latest-file ./local-logs/
    

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:55:19