背景是,我负责维护我们团队用于分析的精美 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 小时后运行崩溃。