如何向容器内Python脚本传参?Docker运行报错求助
问题原因
你执行docker run test --manual test.xml --ckl rhel7.ckl时,Docker会把--manual及后续参数当成容器启动时要执行的命令,直接替换掉Dockerfile里CMD指定的python manual_into_ckl.py。系统找不到名为--manual的可执行文件,因此报错。
解决方法
有两种常用方案:
方案1:改用ENTRYPOINT(推荐)
修改Dockerfile,将CMD替换为ENTRYPOINT:
FROM python:3.10 WORKDIR /home/johnb RUN pip install pandas ADD manual_into_ckl.py . ENTRYPOINT [ "python", "manual_into_ckl.py"]
重新构建镜像:
docker build -t test .
之后执行原命令,参数会自动传递给脚本:
docker run test --manual test.xml --ckl rhel7.ckl
方案2:运行时指定完整命令
如果不想修改Dockerfile,运行时需写出完整执行命令,避免替换默认CMD:
docker run test python manual_into_ckl.py --manual test.xml --ckl rhel7.ckl
额外注意事项
如果test.xml和rhel7.ckl是本地文件,容器默认无法访问,需用-v参数挂载本地目录到容器内:
# 假设文件在当前目录,挂载到容器工作目录 docker run -v $(pwd):/home/johnb test --manual test.xml --ckl rhel7.ckl
内容的提问来源于stack exchange,提问作者DHEXX
相关产品推荐
相关产品推荐

