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

如何在Docker容器中使用plt.savefig()将图片保存到宿主主目录

Docker容器内matplotlib绘图保存到Ubuntu宿主目录操作方案

方法1:启动容器时配置绑定挂载(推荐长期使用)

这是最常用的持久化方案,挂载后容器内生成的文件会实时同步到宿主机,无需额外操作:

  • 先在宿主机创建专门存储绘图的目录(也可以直接用现有主目录):
    mkdir -p ~/docker_plots
    
  • 启动容器时添加-v参数配置目录挂载,规则为-v 宿主机路径:容器内路径。假设你的matplotlib代码中,绘图保存的路径是容器内的/app/plots目录,启动命令示例:
    docker run -v ~/docker_plots:/app/plots 你的镜像名称
    
    注意:路径顺序不要写反,容器内路径必须和你代码里plt.savefig()写的保存路径完全匹配,比如你代码写plt.savefig("/app/plots/折线图.png"),容器侧的挂载路径就要对应到/app/plots
  • 如果出现生成的图片只有root权限能访问的问题,启动时追加用户匹配参数即可:
    docker run -v ~/docker_plots:/app/plots --user $(id -u):$(id -g) 你的镜像名称
    
  • 容器运行完成后,直接打开宿主机的~/docker_plots目录就能查看所有生成的绘图。

方法2:已运行完成的容器直接拷贝文件

如果容器已经运行结束,没有提前做挂载,可以直接把绘图从容器中拷贝到宿主机:

  • 先查询对应容器的ID:
    docker ps -a
    
  • 使用docker cp命令拷贝文件,假设容器ID为abc123,容器内绘图存储在/app/plots目录,拷贝到宿主机主目录的命令为:
    docker cp abc123:/app/plots ~/docker_plots
    

代码侧注意事项

无GUI的Ubuntu服务器环境运行matplotlib需要提前设置无界面后端,否则会报错无法生成图片,代码开头添加如下配置即可:

import matplotlib
matplotlib.use('Agg') # 必须在import pyplot之前设置
import matplotlib.pyplot as plt

保存图片时尽量写绝对路径,避免因工作目录不符导致文件找不到的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 00:03:03