0

背景是,我负责维护我们团队用于分析的精美 Docker 映像。它使用Jupyter 笔记本图像作为基础,然后添加各种自定义、额外的包等。

一位团队成员最近想运行 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 env 已经创建,但 Tensorflow 包已安装到基本 env 中,而不是 tensorflow env。有人遇到过这种情况么?如果我登录到容器,我可以验证 tensorflow 环境是否已创建:它只是不包含 Tensorflow 包。

如果从容器内部运行create,activate和命令,我不会遇到这个问题。install只有当我尝试在 Dockerfile 中执行此操作时。

我使用 mamba 而不是 conda 因为后者需要永远运行,考虑到安装的软件包数量。事实上,尝试conda install tensorflow在大约 5 小时后运行崩溃。

4

1 回答 1

3

不是 dockerfiles 专家,但通常您可以使用-ninstall 命令的标志来指定安装的目标环境,如下所示:

mamba install -n tensorflow -y tensorflow=2.4.3
于 2021-09-10T12:21:46.737 回答