我有个 docker image (名为 seedllm),里面有 py310 / py311 两个 env
正常是: 手动跑命令,先 docker run -it
再 conda activate py310
最后 python3 -m run.py
现在要用 k8s 运行 docker,只能给一句命令
直接 conda env list
会报错 conda not found
$ sudo docker run -it seedllm /bin/bash -c "conda env list "
..
/bin/bash: line 1: conda: command not found
反复调试会发现 sudo docker run -it seedllm /bin/bash -c "env | grep PATH"
,和手动登录的 env 不一样。
而手动登进去 env | grep PATH
是有 conda 的
在 host 里 bash -c "source ~/.bashrc"
不生效
$ sudo docker run -it seedllm /bin/bash -c "source ~/.bashrc && conda env list"
..
/bin/bash: line 1: conda: command not found
直接 export PATH=/root/miniconda3/bin:PATH && conda init bash
也没有效果
$ sudo docker run -it seedllm /bin/bash -c "source ~/.bashrc && export PATH=/root/miniconda3/bin:$PATH && conda activate py310"
..
CondaError: Run 'conda init' before 'conda activate'
$ sudo docker run -it seedllm /bin/bash -c "source ~/.bashrc && export PATH=/root/miniconda3/bin:$PATH && conda init bash && conda activate py310"
..
CondaError: Run 'conda init' before 'conda activate
不用 conda activate
了,直接运行时指定 env,即 conda run -n py310 python3 --version
$ sudo docker run -it seedllm /bin/bash -c "source ~/.bashrc && export PATH=/root/miniconda3/bin:$PATH && conda run -n py310 python3 --version"
Python 3.10.14
bash -ic ..
bash -xc ..