目录
[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.log或jobschedule_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 export 与 docker 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