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

Docker exec切换目录后执行python命令无效问题解决方法

故障原因

每一条docker exec命令都会在容器内启动一个独立的隔离进程,进程之间不共享Shell上下文——包括工作目录、环境变量等状态。
你脚本里的docker exec mycontainer cd modifiedDiffusion执行时,确实会在对应的临时进程内完成目录切换,但这条命令执行完进程就直接退出了,切换目录的状态不会保留到下一条docker exec命令。后续执行python hello.py时,进程还是回到容器配置的默认工作目录,自然找不到modifiedDiffusion目录下的同名脚本。
你之前验证cd命令生效的测试逻辑有问题:单独执行docker exec mycontainer ls依然是在默认目录下输出内容,根本没有验证到modifiedDiffusion目录的状态。

修复方案

任选以下一种方式修改即可:

  • 方案1:同目录下需要执行的多条命令,合并到同一条docker exec中,通过sh -c在同一个Shell进程内串联执行
    修正后的完整脚本:
#!/bin/bash
docker start mycontainer
docker exec mycontainer python hello.py
docker exec mycontainer sh -c "cd modifiedDiffusion && python hello.py && sh executeModifiedDiffusion.sh"
docker stop mycontainer
  • 方案2:使用docker exec的-w参数,直接指定单条命令的工作目录,不需要单独执行cd操作
    *注意:-w后面需要填写容器内目标目录的绝对路径,不确定路径的话可以先执行docker exec mycontainer find / -name "modifiedDiffusion" -type d查询。
    对应脚本示例:
#!/bin/bash
docker start mycontainer
docker exec mycontainer python hello.py
docker exec -w /容器内modifiedDiffusion的绝对路径 mycontainer python hello.py
docker exec -w /容器内modifiedDiffusion的绝对路径 mycontainer sh executeModifiedDiffusion.sh
docker stop mycontainer

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:15:42