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

Docker容器运行Python脚本为何无法将SVG保存至宿主机根目录?

问题原因

Docker容器拥有独立的文件系统,与宿主机的文件系统完全隔离。你的Python脚本在容器内生成的news.svg文件仅存在于容器内部的文件系统中,不会自动同步到宿主机根目录。

解决方案:使用Docker绑定挂载

通过**绑定挂载(bind mount)**将宿主机的目录与容器内的目录关联,让脚本生成的文件直接保存到宿主机指定目录。

步骤1:修改Python脚本的保存路径

将脚本中保存SVG的路径改为容器内的一个指定目录(比如/output),确保容器有写入权限:

print('python code starting')

print('importing modules...')

import pyqrcode
from pyqrcode import QRCode

# String for QR code
qrcode_webpage = "https://www.bbc.com/news"

# Generate QR Code
url = pyqrcode.create(qrcode_webpage)

# 保存到容器内的/output目录
url.svg("/output/news.svg", scale=8)

print('code finished')

步骤2:重新构建Docker镜像

因为修改了脚本,需要重新构建镜像:

docker build -t python-qr .

步骤3:运行容器并挂载宿主机目录

方案A:保存到宿主机根目录(不推荐,风险较高)

运行容器时,将宿主机根目录/挂载到容器内的/output目录:

docker run -v /:/output python-qr

执行后,news.svg会直接出现在宿主机的根目录/下。

方案B:保存到宿主机的专用目录(推荐,更安全)

  1. 先在宿主机创建一个专门存放QR码的目录,比如~/qr-output:
    mkdir -p ~/qr-output
    
  2. 运行容器时挂载该目录到容器的/output:
    docker run -v ~/qr-output:/output python-qr
    
    执行后,news.svg会出现在宿主机的~/qr-output目录下。
补充说明
  • 绑定挂载的格式为-v 宿主机路径:容器内路径,容器对容器内路径的读写操作会直接同步到宿主机路径。
  • 避免挂载宿主机根目录,防止容器意外修改宿主机系统文件,优先使用专用目录。

内容的提问来源于stack exchange,提问作者e-driver1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:37:44