Docker打包conda环境,封装成镜像


前言

本教程包括:
1.如何通过Dockerfile创建镜像
2.如何在镜像中下载conda环境
3.如何打包本机conda环境,封装成docker镜像


一、Dockerfile创建镜像

按照以下文件构建Dockerfile,从dockerfile中构建镜像。

# Dockerfile
FROM <镜像库>:tag #这里可以是ubuntu,python,pytorch等,本例采用torch环境

# # 配置清华源(Debian 11 bullseye)
# RUN echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" > /etc/apt/sources.list && \
#     echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \
#     echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free" >> /etc/apt/sources.list

# # 安装系统依赖
# RUN apt-get update && apt-get install -y \
#     git \
#     build-essential \
#     libgl1 \
#     libglib2.0-0 \
#     && rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /workspace

# 安装ComfyUI依赖
COPY ComfyUI/requirements.txt .
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt #可以挂清华源,不然很慢

二、在docker中下载conda环境

进入构建镜像的容器中,执行以下三条命令,下载并安装miniconda。

# 下载miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 安装miniconda
# -b 静默安装,即无需用户交互 -p /opt/conda 安装位置
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda

# 删除安装包
rm Miniconda3-latest-Linux-x86_64.sh

然后在docker容器中,在命令行敲入以下指令进行配置:

# 1. 将 Conda 初始化脚本添加到 /etc/profile.d/(系统级配置)
echo 'export PATH="/opt/conda/bin:$PATH"' > /etc/profile.d/conda.sh

# 2. 使配置文件可执行
chmod +x /etc/profile.d/conda.sh

# 3. 立即生效(可选)
source /etc/profile.d/conda.sh

然后在启动docker时的.sh文件中添加:(为了在一开始激活conda环境)

set -e
# 启动conda环境
source /workspace/conda/etc/profile.d/conda.sh
conda activate comfyui

三、打包本机conda环境,封装成docker镜像

方法一:挂载环境(临时生效)

在docker compose文件中将本机的conda环境挂载到镜像中对应的conda环境中

volumes:
      - /data/workspace/anaconda3/envs/comfyui:/workspace/conda/envs/comfyui

方法二:打包环境镜像(永久有效)

将本机的conda环境直接复制到对应的conda环境中,直接打包成镜像
参考链接:Docker 封装anaconda环境,生成镜像并打包,纯小白一文读懂(二)
注意:使用该教程需要将dockerfile文件中的FROM anaconda替换为FROM torch,然后在torch构建的容器内参考二安装anaconda环境,再按照这个教程中将本地的envs环境直接复制到容器内的anaconda环境中,再打包成镜像。(完全按照这个教程会出现torch等无法使用的问题)

docker cp /home/b/miniconda3/envs/yolo1.7 test:/opt/conda/envs

其他思路:

1.将本机的conda环境中的包导出

# 导出环境配置到YAML文件
conda env export -n myenv > environment_backup.yaml

然后在docker中通过yaml文件重建环境:

conda env create -f environment_backup.yaml --name myenv_restored

2.导出本机pip安装的包

pip freeze > requirements.txt

然后在docker中恢复

# 方法:结合pip恢复
conda env create -n myenv_new python=3.10
conda activate myenv_new
pip install -r requirements.txt

但在实验过程中,由于导出的文件中有一些和本机绑定的路径,导致这两种方法都失败了,但感觉思路可行,记录一下


其他参考:
(本人自用)将本地的anaconda环境封装到docker中并导出为压缩包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值