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

如何从远程Docker容器中复制文件?

从远程机器的Docker容器下载文件的几种方法

没问题!既然你已经通过SSH连接到远程机器了,下面几种实用方法可以帮你把容器里的特定文件弄到本地,按需选择就行:

方法一:先复制到远程机器,再传到本地(最通用,无需额外配置)

这是最稳妥的方式,不管容器状态如何都能生效:

  1. 在SSH连接的远程机器终端里,先找到目标容器的名称或ID:
    docker ps  # 查看运行中的容器
    # 或者如果容器没运行,用 docker ps -a
    
  2. 把容器内的文件复制到远程机器的本地目录(比如/tmp临时目录):
    docker cp <容器名或ID>:<容器内文件的绝对路径> <远程机器的目标路径>
    # 举个例子:docker cp my-web-app:/var/log/nginx/access.log /tmp/nginx-access.log
    
  3. 新开一个本地终端(别关掉SSH的窗口),用scp把远程机器上的文件传到你的本地电脑:
    scp <远程机器用户名>@<远程机器IP>:/tmp/nginx-access.log <本地电脑的目标路径>
    # 例子:scp ubuntu@192.168.3.10:/tmp/nginx-access.log ~/Documents/Logs/
    

方法二:直接通过远程Docker Daemon复制(一步到位,需小配置)

如果不想折腾两次复制,可以让本地Docker直接连接远程的Docker服务,一步把文件拉到本地:

  1. 直接在本地终端执行以下命令,让本地Docker命令关联远程机器的Docker服务:
    export DOCKER_HOST=ssh://<远程机器用户名>@<远程机器IP>
    
  2. 现在本地Docker命令就会直接操作远程的容器了,执行docker cp直接拉文件到本地:
    docker cp <远程容器名或ID>:<容器内文件路径> <本地目标路径>
    # 例子:docker cp my-web-app:/var/log/nginx/access.log ~/Documents/Logs/
    
  3. 操作完如果想切回本地Docker环境,执行unset DOCKER_HOST即可。

方法三:通过容器内的服务传输(适合特殊场景)

如果你的容器里装了SSH或HTTP服务(比如sshd、nginx),也可以直接从容器拉取,但需要额外配置,一般不推荐作为首选:

  1. 先获取容器的IP地址:
    docker inspect <容器名或ID> | grep -A 2 "IPAddress"
    
  2. 如果容器有SSH服务,直接用scp从容器IP拉文件(需要知道容器内的用户名和密码):
    scp <容器内用户名>@<容器IP>:<文件路径> <本地目标路径>
    
  3. 如果容器用HTTP服务共享了文件,也可以直接用curl或wget下载:
    curl http://<容器IP>:<端口>/<文件路径> -o <本地目标路径>
    

小提示

  • docker cp命令不管容器是否处于运行状态都能使用,不用特意启动容器~
  • 容器内的文件路径尽量用绝对路径,避免因为容器工作目录不同导致找不到文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:56:11