0

我正在尝试让 xeus-cling 处理 OCI 图像,目前我正在使用 buildah + podman。我遇到两个问题

  1. 我尝试使用 mamba/conda 创建一个环境,但是它需要conda/mamba init bash运行然后重新启动 shell。但是在构建时很难让它重新启动,我尝试构建多阶段图像exit,运行/bin/bash。我还注意到conda检查某些文件是否以某种方式配置,包括/home/joyvan/.bashrc,我cat删除了修改过的文件.bashrc,并COPY把它变成了图像——没有骰子。activate告诉我我需要跑步init
  2. 我试过在没有环境的情况下安装它,我一直收到错误
Encountered problems while solving:
 - nothing provides system needed by clangdev-5.0.0-default_0

我不知道具体clangdev-5.0.0-default_0是哪个包(因此在 Dockerfile 中有一堆注释掉的 C++ 相关包)

我什至让笔记本运行了几次(不记得我做了什么),但没有看到创建 C++ 笔记本的选项。我想知道这是否可能是由于

我已将我的 Dockerfile 置于下面的当前状态(我有点疯狂Ctrl+Z

感谢您阅读

  • TFB :)
FROM docker.io/jupyter/scipy-notebook:latest

SHELL [ "/bin/bash", "-c" ]

RUN mamba install -y xeus -c conda-forge
RUN mamba install -y jupyterlab -c conda-forge

# RUN conda install gcc7 -c conda-forge
# RUN mamba install -y -c conda-forge clangdev
# RUN mamba install -y -c conda-forge/label/llvm_rc clangdev
# RUN mamba install -y -c conda-forge/label/cf202003 clangdev
# RUN mamba install -y -c conda-forge/label/gcc7 clangdev
# RUN mamba install -y -c conda-forge/label/broken clangdev
# RUN mamba install -y -c conda-forge/label/cf201901 clangdev


RUN mamba install -y -c conda-forge jupyter_contrib_nbextensions 
# RUN conda init bash
# RUN conda create -n cling
# RUN conda activate cling
RUN mamba install -y xeus-cling -c conda-forge
4

2 回答 2

1

从同一个图像开始,具有xeus-cling内核功能的 Jupyter 的最小工作示例是:

Dockerfile

FROM docker.io/jupyter/scipy-notebook:latest

RUN mamba install -yn base nb_conda_kernels \
    && mamba create -yn xeus-cling xeus-cling \
    && mamba clean -qafy

构建并运行

docker build -t jupyter-xeus:latest .
docker run -p 8888:8888 jupyter-xeus:latest

然后,我可以从 Jupyter 创建 C++11、C++14 和 C++17 内核。这是运行一些琐碎单元格后的 C++14:

在此处输入图像描述

补充说明

这些图像在基本环境中安装了 Jupyter 。如果您希望在其他环境中安装的替代内核能够自动获取,我们将添加nb_conda_kernels基础.

然后xeus-cling将其安装到单独的 Conda 环境中。

几乎应该总是链接 Docker RUN 命令,因为这样可以避免不必要地生成中间体。

如果您想在某个环境中使用其他软件,例如boost在 中xeus-cling,则将其包含在创建中 -不要运行多个conda install命令!. 例如,

RUN mamba install -yn base nb_conda_kernels \
    && mamba create -yn xeus-cling xeus-cling boost \
    && mamba clean -qafy

mamba clean -qafy有助于最小化图像的大小。

于 2022-01-14T16:38:56.893 回答
0

上面有一个正确的答案,但我只是想发布我也有一个“黑客”。你可能已经注意到,如果你进入 juypter 界面有一个 New -> Terminal 选项。安装xues-cling在这个终端上工作,所以我只是用它来安装xues-cling,它最终工作,它可能(并且最好)可以完成mamba,但我当时的一些其他黑客可以使用conda

FROM docker.io/jupyter/scipy-notebook:latest

RUN pip install jupyter-console
RUN conda create -y -n xeus-cling
RUN jupyter console source activate xeus-cling
RUN conda install -y -c conda-forge xeus-cling
于 2022-02-03T23:00:26.957 回答