我正在尝试从现有的 docker 映像设置一个奇点容器,在该容器中,只要我运行容器,就会激活名为“tensorflow”的 conda 环境。我在这里找到了有关此主题的一些答案。不幸的是,在这篇文章中,他们只解释了如何设置奇异 .def 文件以默认激活 conda 环境。但是,我只想修改现有的 Dockerfile,然后从中构建一个奇点映像。
到目前为止,我尝试的是像这样设置 Dockerfile:
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 容器:
docker run -t -d --rm --name=my_container opensuse_conda:latest
并进入容器:
docker exec -it my_container bash
结果符合预期。shell 会话在“tensorflow”环境处于活动状态时直接启动,该环境由 (tensorflow) 前缀指示。
要从这个 docker 图像构建奇异图像,我使用:
sudo singularity build opensuse_conda.sif docker-daemon://opensuse_conda:latest
并使用以下命令运行容器:
sudo singularity run opensuse_conda.sif
这就是问题发生的地方。默认情况下,“base”环境被激活,而不是“tensorflow”环境。但是,我宁愿在运行奇异容器时激活“张量流”环境。
如何修改我的 Dockerfile,以便在同时运行 docker 容器和奇异容器时,默认环境是“tensorflow”?
非常感谢您的帮助!