场景
我正在尝试设置一个简单的 Docker 镜像(因为我对 Docker 还比较新,所以请纠正我可能存在的误解),基于公共的 continuumio/anaconda3 容器。
Dockerfile
:
FROM continuumio/anaconda3:latest
# update conda and setup environment
RUN conda update conda -y \
&& conda env list \
&& conda create -n testenv pip -y \
&& source activate testenv \
&& conda env list
使用docker build -t test .
命令构建镜像时出现错误:
/bin/sh: 1: source: not found
当激活新的虚拟环境时。
建议1:
根据此答案,我尝试了以下操作:
FROM continuumio/anaconda3:latest
# update conda and setup environment
RUN conda update conda -y \
&& conda env list \
&& conda create -y -n testenv pip \
&& /bin/bash -c "source activate testenv" \
&& conda env list
这似乎一开始可以正常工作,因为它输出:
将/opt/conda/envs/testenv/bin 预置到 PATH 中
,但是 conda env list
和 echo $PATH
明显显示它并没有生效:[...]
# conda environments:
#
testenv /opt/conda/envs/testenv
root * /opt/conda
---> 80a77e55a11f
Removing intermediate container 33982c006f94
Step 3 : RUN echo $PATH
---> Running in a30bb3706731
/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Docker文件作为MWE可以直接使用。 感谢任何想法。谢谢!
bash -c "source activate whatever"
将其源代码注入到新的 shell 中,但这并不是你所需要的——你需要将这些变量添加到你现有的 shell 中才能发挥作用,否则当使用bash -c
命令启动的 shell 退出时,更新将被销毁,因此在列出环境变量之前就会消失。 - Charles Duffybash -c
,但当我进入容器本身并激活容器内的conda环境时,一切都正常工作。能够明确说明您遇到的问题将会很好。 - Charlie ParkerRUN /bin/bash -c "source activate pytorch-py35"
工作了…不确定为什么RUN /bin/bash -c source activate pytorch-py35
没有工作。 - Charlie Parker