在Docker中使用conda虚拟环境

Overview

Dockerfile, Conda

使用常规方法创建Conda虚拟环境并激活的过程会遇到很多错误,经过查找资料,总结了可行的方法。本文方法的参考文章

1. 保存虚拟环境yml文件

  1. 在本地激活你想放入Docker中的Conda虚拟环境:conda activate <myenv>
  2. 输出Conda环境配置文件:conda env export > environment.yml
  3. 删除配置文件中位于pip之后的内容。 在我的Docker生成过程中,环境配置文件中若包含pip安装包,则会报错。所以需要删除相关的包,在Dockerfile中,可以在conda环境激活后重新使用pip手动安装所需的。 下面是一个典型的environment.yml文件:
     1name: myenv
     2channels:
     3  - pytorch
     4  - nvidia
     5  - ...
     6dependencies:
     7  - _libgcc_mutex=0.1=main
     8  - blas=1.0=mkl
     9  - ...
    10- pip:                    # 删除此行及以下的内容并保存文件
    11    - addict==2.4.0
    12    - aliyun-python-sdk-core==2.14.0
    13    - ...
    14prefix: /home/*/miniconda3/envs/myenv
    

2. 编写Dockerfile

在你的Dockerfile中添加如下内容:

 1# 使用带有conda的镜像
 2FROM continuumio/miniconda3
 3
 4WORKDIR /app
 5
 6# 使用上一节的环境文件创建虚拟环境:
 7COPY environment.yml .
 8RUN conda env create -f environment.yml
 9
10# 激活该虚拟环境:
11SHELL ["conda", "run", "-n", "<myenv>", "/bin/bash", "-c"]
12
13# 若需要安装pip包,如下:
14RUN pip install A B C

通过该Dockerfile则可以构建使用Conda虚拟环境的镜像。

comments powered by Disqus

Translations: