如何从docker容器中导入或者导出文件

时间:2025-03-31 22:51:30

Docker中,从容器中导入或导出文件通常可以通过以下几种方法实现:

从容器中导出文件

使用 docker cp 命令

这是最直接的方法,可以从容器内部复制文件到宿主机的文件系统

docker cp <容器ID或容器名称>:<容器内的文件路径> <宿主机的目标路径>
  • 1

例如,如果你想从容器 my_container 中导出 /app/ 文件到宿主机的 /home/user/ 目录下,你可以使用:

docker cp my_container:/app/ /home/user/
  • 1
使用 rzsz 命令 (仅限于某些 shell)

如果你在容器内有 bash shell,并且安装了 lrzsz 工具,你可以在容器内部使用 sz 命令来导出文件:

docker exec -it <容器ID或容器名称> bash
# 在容器内部执行:
sz /app/
  • 1
  • 2
  • 3

这将触发文件传输协议(如 TFTP),并允许你从容器内部导出文件到你的本地机器。

向容器中导入文件

使用 docker cp 命令

与导出类似,你可以使用 docker cp 命令将文件从宿主机复制到容器内部:

docker cp <宿主机的文件路径> <容器ID或容器名称>:<容器内的目标路径>
  • 1

例如,将宿主机的 /home/user/ 文件复制到容器的 /app/ 目录下:

docker cp /home/user/ my_container:/app/
  • 1
使用 rz 命令 (仅限于某些 shell)

同样地,如果 lrzsz 安装在容器中,你也可以使用 rz 命令从宿主机导入文件:

docker exec -it <容器ID或容器名称> bash
# 在容器内部执行:
rz
  • 1
  • 2
  • 3

这将打开一个文件选择对话框,允许你选择并上传文件到容器内部。

注意事项

  • 确保在使用 docker cp 前,容器处于运行状态。
  • 使用 rzsz 命令时,确保容器中的 shell 支持图形界面文件选择(通常在终端仿真器中不可行)并且 lrzsz 已经被正确安装。
  • 如果你需要频繁地交换文件,考虑使用数据卷(-v 参数)或绑定挂载来持续共享文件系统。

以上就是从Docker容器中导入或导出文件的一些常用方法。