Python脚本运行完成后如何从Docker容器中获取/result目录内容?
解决方案
方案1:绑定挂载宿主机目录到容器/result路径(最推荐)
直接在启动命令中添加-v参数将宿主机本地目录映射到容器内的/result目录,容器内生成的结果会直接写入宿主机,不需要额外拷贝操作,容器是否退出、是否加--rm参数都不影响结果留存。
命令示例:
# 把/path/host/result替换成你宿主机上要存结果的实际路径 # Windows环境宿主机路径调整为盘符开头格式即可,例如-v D:\my-result:/result docker run --rm -v /path/host/result:/result imgTest --arg=hello --argTwo=world
执行完成后直接去宿主机的对应目录下拿结果即可。
方案2:保留退出容器手动拷贝
去掉启动命令中的--rm参数,容器执行完成退出后不会被自动删除,你可以直接从停止的容器中拷贝目标目录。
操作步骤:
- 调整启动命令运行容器:
# 给容器指定一个固定名称方便后续操作,也可以后续用容器ID操作 docker run --name temp-result-container imgTest --arg=hello --argTwo=world
- 容器执行完成退出后执行拷贝命令:
docker cp temp-result-container:/result ./local-result-path
- 拷贝完成后手动删除残留的停止容器:
docker rm temp-result-container
方案3:延长容器运行时间预留拷贝窗口
如果需要保留原来的运行逻辑,只是临时需要拷贝结果,可以覆盖启动命令,在脚本执行完成后加一段sleep时间,在时间窗口内执行拷贝即可。
命令示例:
# sleep 300代表预留5分钟操作时间,可自行调整时长 # 注意将python /path/your/script.py替换为你镜像内实际的脚本启动命令 docker run --name temp-container imgTest sh -c "python /path/your/script.py --arg=hello --argTwo=world && sleep 300"
打开另一个终端,等待脚本执行完成后执行拷贝:
docker cp temp-container:/result ./local-result-path
内容的提问来源于stack exchange,提问作者petro99
相关产品推荐
相关产品推荐

