Linux 跨服务器导出 Docker 容器内文件

目录

一、适用场景

二、前置信息(必填)

三、推荐命令(一键导出,优先使用)

四、分步教学(稳妥版,适合新手)

步骤1:登录远程服务器

步骤2:验证容器是否存在

步骤3:验证容器内目标路径是否存在

步骤4:远程服务器本地打包导出

步骤5:本地服务器拉取文件

五、常见错误及解决方案

[1. 报错:Could not resolve hostname](#1. 报错:Could not resolve hostname)

[2. 报错:docker export 无法指定路径](#2. 报错:docker export 无法指定路径)

六、通用空白模板(可直接分发/存档)


说明:文档中 IP 已预留替换位置,可直接根据自身实际情况修改,适配所有 Linux 系统跨服务器 Docker 文件导出场景。

一、适用场景

核心需求:将 远程 Linux 服务器 A 上某个 Docker 容器内的指定目录/文件,导出至 本地服务器 B(当前操作服务器)。

本次实操目标:将容器内路径 /usr/local/rds/log 导出到本地当前目录,保存为指定日志文件。

二、前置信息(必填)

  • 远程服务器 IP:【替换为你的远程服务器真实IP】
  • 远程服务器用户名:root(默认通用,若为其他用户名可替换)
  • 目标容器 ID/容器名:afe3bb593f26(替换为自身容器信息)
  • 容器内待导出路径:/usr/local/rds/log(固定本次目标路径)
  • 本地保存文件名:jobschedule.logjobschedule_log.tar(二选一,tar 格式适合目录打包)

三、推荐命令(一键导出,优先使用)

操作场景:在 本地服务器 B 直接执行,无需登录远程服务器,高效便捷。

通用命令模板:

复制代码
ssh 用户名@远程服务器IP "docker cp 容器ID:/容器内路径 -" > 本地文件名

适配本次场景(直接复制,替换IP即可):

复制代码
ssh root@远程服务器IP "docker cp afe3bb593f26:/usr/local/rds/log -" > jobschedule_log.tar

操作说明:执行命令后,输入远程服务器 root 密码,等待导出完成即可(进度无显示,耐心等待即可)。

四、分步教学(稳妥版,适合新手)

若一键命令执行失败,可按以下步骤分步操作,全程可验证,降低出错概率。

步骤1:登录远程服务器
复制代码
ssh root@远程服务器IP

输入远程服务器密码,成功登录后进入远程服务器命令行。

步骤2:验证容器是否存在
复制代码
docker ps -a

查看输出结果,确认 afe3bb593f26(容器ID)是否在列表中,状态正常即可。

步骤3:验证容器内目标路径是否存在
复制代码
docker exec afe3bb593f26 ls /usr/local/rds/log

若输出路径下的文件/目录,说明路径有效;若报错"No such file or directory",请检查路径是否输入错误。

步骤4:远程服务器本地打包导出
复制代码
docker cp afe3bb593f26:/usr/local/rds/log /root/jobschedule_log.tar

将容器内路径导出到远程服务器的 /root 目录下,保存为 tar 包(可修改远程保存路径)。

步骤5:本地服务器拉取文件

先输入 exit 退出远程服务器登录,回到本地服务器命令行,执行以下命令:

复制代码
scp root@远程服务器IP:/root/jobschedule_log.tar ./

执行后输入远程密码,即可将远程服务器的 tar 包拉取到本地当前目录(./ 表示当前目录)。

五、常见错误及解决方案

1. 报错:Could not resolve hostname

核心原因 :命令格式错误,IP 与命令之间缺少空格,或遗漏 root@

错误写法(示例):

复制代码
ssh 1.2.3.4"docker cp afe3bb593f26:/usr/local/rds/log -" > jobschedule_log.tar

正确写法(示例):

复制代码
ssh root@1.2.3.4 "docker cp afe3bb593f26:/usr/local/rds/log -" > jobschedule_log.tar
2. 报错:docker export 无法指定路径

核心原因 :混淆 docker exportdocker cp 的用途。

关键说明:docker export 仅能导出整个容器 ,无法指定单个目录/文件;导出容器内具体文件/目录,必须使用 docker cp 命令。

正确命令格式:

复制代码
docker cp 容器ID:容器内路径 目标保存路径

六、通用空白模板(可直接分发/存档)

无需修改格式,仅替换 远程服务器IP容器ID 即可适配所有类似场景:

复制代码
# 跨服务器一键导出 Docker 容器内目录到本地(通用模板)
ssh root@远程服务器IP "docker cp 容器ID:/容器内路径 -" > 本地保存文件名.tar

# 本次场景专用模板(替换IP即可)
ssh root@远程服务器IP "docker cp afe3bb593f26:/usr/local/rds/log -" > jobschedule_log.tar
相关推荐
wljy113 小时前
二、静态库的制作和使用
linux·c语言·开发语言·c++
mzhan01714 小时前
Linux: coredump产生对程序退出的影响
linux·运维·服务器
光电笑映14 小时前
从环境变量到进程虚拟地址空间——Linux 内存管理的底层脉络
linux·服务器·c++·c
源远流长jerry14 小时前
Linux 网络收包机制:从网卡到 Socket 的完整路径
linux·运维·服务器·网络·网络协议·tcp/ip
qq_3643717214 小时前
基于 Docker 容器化环境配置
运维·docker·容器
GentleDevin16 小时前
Docker 运维常用命令大全
docker·容器·运维命令
运维全栈笔记16 小时前
基于Docker的MinIO单机部署与功能测试指南
运维·docker·容器
杰 .16 小时前
Linux工具使用
linux·服务器
Gc9umsbL116 小时前
零基础学Linux:21天从“命令小白”到独立部署服务器
linux·运维·服务器
骑着骆驼写程序17 小时前
Ubuntu上部署前端项目报500错误
linux·运维·ubuntu