如何指定conda环境打包成docker镜像

        本环境涉及yolov8环境,使用的torch推理等很多第三方库,安装比较费时。找到两种方法,都试过了,不过只有后一种成功了。配合docker命令操作更好。(注意,使用的miniconda3管理虚拟环境)

一、直接通过 environment.yml 构建

1.1 导出 Conda 环境配置

在本地生成 environment.yml 文件:

conda activate myenv
conda env export > environment.yml

1.2 创建 Dockerfile

新建一个 Dockerfile 文件,内容如下:

# 使用官方 Miniconda 镜像(轻量级)注意:docker.1ms.run/是国内docker源,后面是镜像名
FROM docker.1ms.run/continuumio/miniconda3:latest

# 复制环境配置文件到镜像中
COPY environment.yml /tmp/

# 创建 Conda 环境(替换 `myenv` 为你的环境名)
RUN conda env create -f /tmp/environment.yml -n myenv

# 激活环境并设置默认命令(关键步骤!)
# 方法 1:通过修改 PATH 直接使用环境中的命令
ENV PATH /opt/conda/envs/myenv/bin:$PATH

# 方法 2:在容器启动时激活环境(需配合 `conda init` 使用)
# RUN echo "conda activate myenv" >> ~/.bashrc
# SHELL ["/bin/bash", "--login", "-c"]

# 可选:清理缓存减小镜像体积
RUN conda clean -afy

# 设置默认启动命令(根据实际需求调整)
CMD ["python", "your_script.py"]

1.3 构建 Docker 镜像

docker build -t myenv-image .

1.4 运行容器

docker run -it --rm myenv-image

如果涉及显卡可以参考:

docker run --name myevn --runtime=nvidia  --gpus=all --network=host --privileged=true -it cdcab10f7a21 /bin/bash

二、使用 conda-pack 预打包环境(离线场景)

2.1 本地打包 Conda 环境

        在conda的base环境中安装conda pack库(未特意注明默认在base环境中):

conda install -c conda-forge conda-pack

        使用 conda-pack 生成压缩包:

conda pack -n myenv -o myenv.tar.gz

2.2 创建 Dockerfile

# 使用基础镜像(如 Ubuntu)
FROM docker.1ms.run/ubuntu:22.04

# 安装必要工具
RUN apt-get update && apt-get install -y \
    bzip2 \
    && rm -rf /var/lib/apt/lists/*
# 下面库是opencv-python依赖库,如果没有可不加
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6  -y

# 创建 Conda 环境目录
ENV CONDA_DIR /opt/conda
RUN mkdir -p $CONDA_DIR

# 复制预打包的 Conda 环境到镜像
COPY peiwang.tar.gz /tmp/
COPY peiwang_project ~/
RUN tar -xzf /tmp/peiwang.tar.gz -C $CONDA_DIR \
    && rm /tmp/peiwang.tar.gz

# 设置环境变量
ENV PATH $CONDA_DIR/bin:$PATH

# 创建项目目录并复制项目文件到 /home/peiwang_project
RUN mkdir -p /home/peiwang_project
COPY peiwang_project /home/peiwang_project

# 设置默认工作目录和启动命令
WORKDIR /home/peiwang_project
CMD ["python", "./code/src/web_running.py"]

2.3 构建

docker build -t myenv-image .

2.4 运行镜像

docker run --name peiwang_test --runtime=nvidia  --gpus=all --network=host --privileged=true -it peiwang-image /bin/bash

        注意:上述有的名字用myenv,有的用peiwang,需要注意区别。

### 将 Conda 环境打包 Docker 镜像 为了将现有的 Conda 环境转换为 Docker 镜像,需经历几个重要阶段:准备必要的工具、定义环境配置文件以及编写 Dockerfile 来指导 Docker 构建过程。 #### 工具准备 确保目标系统已安装 Docker。这一步骤至关重要,因为后续操作依赖于 Docker 提供的功能来创建和管理容器化应用[^1]。 #### 导出 Conda 环境 假设当前拥有一个名为 `myenv` 的 Conda 环境,可以通过激活该环境并执行导出命令将其状态保存到 YAML 文件中: ```bash conda activate myenv conda env export --no-builds > environment.yml ``` 此命令会生一个描述环境中所有包及其版本号的 `environment.yml` 文件,这对于再现相同的开发条件非常有用[^4]。 #### 编写 Dockerfile 接下来,在项目根目录下创建一个新的文本文件命名为 `Dockerfile`,其内容如下所示: ```dockerfile FROM continuumio/miniconda3:latest COPY environment.yml /root/ RUN conda env create -f /root/environment.yml && \ echo "source activate myenv" > ~/.bashrc WORKDIR /app CMD ["bash"] ``` 这段脚本指定了基础镜像为 Miniconda,并通过 COPY 指令引入之前导出的 YML 文件;接着利用 RUN 指令根据这个文件重建 Conda 环境;最后设置工作目录并将默认启动命令设定为 Bash 终端[^3]。 #### 构建与运行 Docker 镜像上述准备工作之后,就可以使用 Docker CLI 进行实际构建了: ```bash docker build -t custom_conda_image . docker run -it custom_conda_image ``` 第一条指令用于编译新的 Docker 映像,而第二条则启动了一个交互式的容器实例,允许用户立即体验新建立起来的应用程序环境[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值