九章智算云
构建镜像(可选)

当用户公共镜像及企业镜像仓库中的镜像无法满足使用需求时,用户可选择构建私有镜像。本文将以克隆LLaMA-Factory为例,演示如何创建并配置Dockerfile文件,构建对应的镜像,并最终推送至目标镜像仓库,具体步骤可参看下文。

前提条件

  • 待推送的镜像的镜像仓库可用的存储空间不少于20GB。
  • 安装符合操作系统的Docker,具体步骤请参考Docker对应文档。

操作步骤

用户通过镜像方式挂载LLaMA Factory项目的数据,具体的操作步骤如下所示。

  1. 用户登录终端软件(例如:MobaXterm),自定义LLaMA Factory项目数据路径,执行如下所示的命令从GitHub上克隆一个名为“LLaMA-Factory”的仓库。示例页面如下图高亮②所示。

    git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
  2. 仓库克隆完成后,打开已克隆的仓库,如下图高亮③所示,创建一个空Dockerfile文件,如下图高亮④所示。对应命令如下所示。

    cd LLaMA Factory
    touch Dockerfile
    vim Dockerfile

    企业注册

  3. 打开文件后,将以下的文件内容复制至Dockerfile文件,用户可根据实际需求修改文件内容,示例文件如下所示。

    FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/pytorch/pytorch:2.5.1-cuda12.1-cudnn9-devel
    ARG DEBIAN_FRONTEND=noninteractive
    ENV TZ=Asia/Shanghai
    RUN  sed -i 's|http://ports.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list
    
    RUN apt update -y && \
        apt install -y curl wget net-tools git cmake poppler-utils tesseract-ocr tesseract-ocr-chi-sim libopenblas-dev ninja-build build-essential pkg-config
    
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    ENV TIME_ZONE Asia/Shanghai
    RUN apt-get update  && apt-get install tzdata -y && apt-get install openssh-server -y
    RUN apt-get update && apt-get install -y vim telnet iputils-ping unzip bzip2
    RUN mkdir -p /workspace/envs
    #RUN rm -rf /opt/conda/envs
    #RUN ln -s /workspace/envs  /opt/conda/envs
    RUN ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh
    ENV PATH /opt/conda/bin:$PATH
    #RUN /opt/conda/bin/conda init bash --system && \
    RUN apt-get install pip -y
    
    # 设置Conda环境变量,包含预置路径和挂载路径
    ENV CONDA_ENVS_PATH=/workspace/envs:/opt/conda/envs
    
    RUN echo "export CONDA_ENVS_PATH=$CONDA_ENVS_PATH" >> /etc/profile.d/cuda.sh && \
            echo "export PATH=/usr/local/cuda/bin:$PATH" >> /etc/profile.d/cuda.sh && \
        echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH" >> /etc/profile.d/cuda.sh && \
        chmod +x /etc/profile.d/cuda.sh
    WORKDIR /LLaMA-Factory
    COPY . /LLaMA-Factory 
    RUN . /opt/conda/etc/profile.d/conda.sh && \
    RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ && \
            conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ && \
            conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/ && \
            conda config --set channel_priority strict && \
            conda config --remove channels defaults && \
            conda create -p /opt/conda/envs/lf python=3.10 -y && \
            conda activate lf && \
            pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple/
    
    # Dockerfile 中声明端口
    EXPOSE 8080

    说明

    用户可按需修改workshop中的挂载目录、Conda环境名称,如果均使用默认值,可忽略该提示。

  4. 文件保存后,执行如下所示的命令根据当前目录下的Dockerfile构建一个新Docker镜像,并为该镜像指定一个标签,示例如上图高亮⑥所示。

    docker build -t [镜像仓库地址/镜像名称:tag信息] .
  5. 镜像构建成功后,执行如下所示的命令,查看镜像是否存在。

    docker images
  6. 确认镜像存在后,执行如下所示的命令,登录用户的镜像仓库,示例如下图高亮①所示。

    企业注册

    docker login [镜像仓库域名] -u [用户名] -p [密码] 
  7. 登录用户的镜像仓库后,执行如下所示的命令将镜像推送到该镜像仓库,示例如上图高亮②所示,推送完成后显示如上图绿色高亮所示。

    docker push [镜像仓库地址/镜像名称:tag信息]

    说明

    如果用户在此选择了北京一区的镜像仓库,则后续创建弹性容器集群时也必须选择北京一区。具体智算中心地址请以您实际获取的信息为准。

最后更新于

这篇文档对你有帮助吗?

目录