Podman/Buildah Install/Use 紧贴xeus

Podman/Buildah Install/Use cling-xeus

我正在尝试让 xeus-cling 在 OCI 图像上工作,目前我正在使用 buildah + podman。我运行分成两个问题

  1. 我尝试用 mamba/conda 创建一个环境,但是它也需要 conda/mamba init bash 运行 然后重新启动 shell。但是在构建时很难让它重新启动,我尝试构建多级图像,exit,运行宁/bin/bash。我注意到 conda 也会检查某些文件是否以某种方式配置,包括 /home/joyvan/.bashrc,我 cat 输出了修改后的 .bashrcCOPY'它也是图像 - 没有骰子。 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 感到有点疯狂)

感谢阅读

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

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

Docker文件

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:

补充说明

这些图像在 base 环境中安装了 Jupyter。如果您希望自动选择安装在其他环境中的替代内核,我们将 nb_conda_kernels 添加到 base.

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

人们应该几乎总是链接 Docker 运行 命令,因为这可以避免生成不必要的中间体。

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

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

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

上面有一个正确的答案,但我只是想 post 我也有一个“黑客”。你可能已经注意到,如果你进入 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