首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从dockerfile启动奇点容器中的conda环境

从dockerfile启动奇点容器中的conda环境
EN

Stack Overflow用户
提问于 2019-08-08 23:57:11
回答 1查看 2.7K关注 0票数 2

我正在尝试从一个现有的docker镜像设置一个奇点容器,在这个镜像中,一个名为"tensorflow“的conda环境在我运行容器时立即被激活。我在这个话题here上找到了一些答案。不幸的是,在这篇文章中,他们只解释了如何在默认情况下设置奇点.def文件来激活conda环境。然而,我只想修改我现有的Dockerfile,然后从它构建一个奇点镜像。

到目前为止,我尝试的是像这样设置Dockerfile:

代码语言:javascript
运行
复制
FROM opensuse/tumbleweed

ENV PATH /opt/conda/bin:$PATH
ENV PATH /opt/conda/envs/tensorflow/bin:$PATH

# Add conda environment files (.yml)
COPY ["./conda_environments/", "."]

# Install with zypper
RUN zypper install -y sudo wget bzip2 vim tree which util-linux

# Get installation file
RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-2019.07-Linux-x86_64.sh -O ~/anaconda.sh

# Install anaconda at /opt/conda
RUN /bin/bash ~/anaconda.sh -b -p "/opt/conda"

# Remove installation file
RUN rm ~/anaconda.sh

# Make conda command available to all users
RUN ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh

# Create tensorflow environment
RUN conda env create -f tensorflow.yml

# Activate conda environment with interactive bash session
RUN echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc
RUN echo "conda activate tensorflow" >> ~/.bashrc

# Default command
CMD ["/bin/bash"]

在构建docker镜像之后,我使用以下命令运行docker容器:

代码语言:javascript
运行
复制
docker run -t -d --rm --name=my_container opensuse_conda:latest

并使用以下命令进入容器:

代码语言:javascript
运行
复制
docker exec -it my_container bash

结果不出所料。shell会话直接在"tensorflow“环境处于活动状态时启动,该环境由(tensorflow)前缀指示。

为了从这个docker镜像构建一个奇点镜像,我使用:

代码语言:javascript
运行
复制
sudo singularity build opensuse_conda.sif docker-daemon://opensuse_conda:latest

并使用以下命令运行容器:

代码语言:javascript
运行
复制
sudo singularity run opensuse_conda.sif

这就是问题所在。默认情况下,"base“环境被激活,而不是"tensorflow”环境。但是,我更希望在运行奇点容器时激活"tensorflow“环境。

如何修改我的Dockerfile,使其在同时运行docker容器和奇点容器时,默认环境为"tensorflow"?

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-10 18:19:23

您的问题是,只有在启动交互式shell时才会读取.bashrc,而不是在容器使用默认命令运行时读取。有关背景信息,请参见this answer

您可以将conda activate tensorflow命令放入大量的bash startup files中。我建议您定义一个自己的文件,并将文件名放入BASH_ENV环境变量中。这两个都可以通过Dockerfile轻松完成。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57416579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档