背景是,我负责维护一个奇特的Docker镜像,供我们的团队用于分析。它使用Jupyter notebook image作为基础,然后添加各种定制、额外的包等。
其中一个团队成员最近想要运行Tensorflow。没问题,我只需要运行mamba install并将其添加到映像中即可。然而,这产生了一个问题: Tensorflow 2.4.3 (最新版本)在某种程度上与R 4.1.1 (也是最新版本)或生态系统中的其他版本不兼容,导致R被降级到3.6.3。因此,我创建了一个新环境,并将TF安装到其中:
FROM hongooi/jupytermodelrisk:1.0.0
RUN mamba create -n tensorflow --clone base
# Make RUN commands use the new environment
RUN echo "conda activate tensorflow" >> ~/.bashrc
SHELL ["/bin/bash", "--login", "-c"]
RUN mamba install -y 'tensorflow=2.4.3'但是当我重新构建镜像时,我发现虽然已经创建了tensorflow环境,但Tensorflow包已经安装到基本环境中,而不是tensorflow环境中。还有没有人遇到过这种情况?如果我登录到容器,我可以验证tensorflow环境是否已经创建:它只是不包含Tensorflow包。
如果从容器内部运行create、activate和install命令,我就不会遇到这个问题。只有当我尝试在Dockerfile中执行此操作时,才会执行此操作。
我使用的是mamba而不是conda,因为根据安装的软件包数量,conda需要很长时间才能运行。事实上,尝试运行conda install tensorflow会在大约5小时后崩溃。
发布于 2021-09-10 12:21:47
不是dockerfiles文件方面的专家,但通常您可以只使用安装命令的-n标志来指定安装的目标环境,如下所示:
mamba install -n tensorflow -y tensorflow=2.4.3https://stackoverflow.com/questions/69127725
复制相似问题