自定义容器镜像

最近更新时间:2021-04-09 18:18:02

查看PDF

用户在添加自定义镜像供AI容器使用时,需要安装如下依赖,满足JupyterSSH和分布式相关的基本功能需要。

中文支持

添加中文支持,安装方法如下:

RUN export DEBIAN_FRONTEND=noninteractive && apt-get install -y locales && locale-gen zh_CN zh_CN.GB18030 zh_CN.GBK zh_CN.UTF-8 en_US.UTF-8 && update-locale 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8

Jupyter Notebook支持

安装jupyterlab(暂时支持版本<3.0),安装方法如下:

RUN pip install --no-cache-dir --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple \
    notebook==6.0.3 \
    jupyter-console==6.0.0 \
    jupyterlab==1.0.2 \
    jupyterlab-nvdashboard \
    jupyter_contrib_nbextensions==0.5.1

安装2.0版本方法如下:

RUN pip install jupyterlab==2.2.9

安装依赖软件

安装可能用到的依赖包(必选项)

# Install deb
RUN apt-get update && apt-get install -yq --no-install-recommends \
    nfs-common \
    s3fs && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

安装可能用到的依赖包(可选项)

# Install deb
RUN apt-get update && apt-get install -yq --no-install-recommends \
    fuse \
    bzip2 \
    telnet \
    automake \
    autotools-dev \
    libcurl4-gnutls-dev \
    libfuse-dev \
    libxml2-dev \
    lsof \
    curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - && \
    apt-get install -yq --no-install-recommends nodejs && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

安装Python依赖

安装常用的Python依赖包(使用SDK进行模型发布和部署需要)

# Install python package
RUN pip install --no-cache-dir --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple \
    ks3sdk

安装常用的Python依赖包(推荐安装)

# Install python package
RUN pip install --no-cache-dir --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple \
    numpy==1.16.4 \
    pandas==0.24 \
    numexpr==2.7.0 \
    scipy==1.4.1 \
    joblib \
    scikit-learn==0.20.4 \
    scikit-image==0.14.5 \
    nbexamples==0.3.1 \
    cloudpickle==0.8 \
    six==1.12.0 

SSH登录支持

安装ssh server,安装方法如下:

RUN apt-get install -y openssh-client openssh-server && \ 
    mkdir -p /var/run/sshd

安装sudo

为了支持为用户分配sudo权限,需要安装sudo依赖包,安装方法如下:

RUN apt-get install -y sudo

创建用户

创建用户kai,创建方法如下:

ARG NB_USER="kai"
ARG NB_UID="1000"
# Create user jovyan
RUN useradd -d /home/$NB_USER -m -s /bin/bash -N -u $NB_UID $NB_USER

安装minicoda(可选项)

对自定义镜像,在启动时候会自动安装minicoda,注意不要存在冲突

Run wget --content-disposition -O /opt/miniconda.sh http://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh && \    
    chmod +x /opt/miniconda.sh && \
    /opt/miniconda.sh -b -p /opt/conda && \
    rm /opt/miniconda.sh && \
    chown kai:1000 /opt/conda/envs && \
    /opt/conda/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \
    /opt/conda/bin/conda config --system --prepend channels conda-forge && \
    /opt/conda/bin/conda config --system --set auto_update_conda false && \
    /opt/conda/bin/conda config --system --set show_channel_urls true && \
    /opt/conda/bin/conda config --system --set channel_priority strict

Python版本要求

支持Python 3.6+

MPI支持(可选项)

如果要进行分布式计算,可能需要使用MPI,安装方法如下

RUN mkdir /tmp/openmpi && \ 
    cd /tmp/openmpi && \ 
    wget https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.0.tar.gz && \
    tar zxf openmpi-4.0.0.tar.gz && \ 
    cd openmpi-4.0.0 && \ 
    ./configure --enable-orterun-prefix-by-default && \ 
    make -j $(nproc) all && \ 
    make install && \ 
    ldconfig && \ 
    rm -rf /tmp/openmpi

示例Dockerfile

FROM tensorflow/tensorflow:2.2.2

USER root

COPY ./sources.list /etc/apt/sources.list

RUN export DEBIAN_FRONTEND=noninteractive && \
    apt-get update && \
    apt-get install -yq --no-install-recommends \
    locales \
    curl \
    build-essential \
    wget \
    nfs-common \
    fuse \
    bzip2 \
    telnet \
    automake \
    autotools-dev \
    libcurl4-gnutls-dev \
    libfuse-dev \
    libxml2-dev \
    lsof \
    openssh-client \
    openssh-server \
    sudo \
    s3fs && \
    curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - && \
    apt-get install -yq --no-install-recommends nodejs && \
    apt-get clean && rm -rf /var/lib/apt/lists/*

RUN locale-gen zh_CN zh_CN.GB18030 zh_CN.GBK zh_CN.UTF-8 en_US.UTF-8 && \
    update-locale
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8

RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple \
    numpy==1.16.4 \
    pandas==0.24 \
    numexpr==2.7.0 \
    scipy==1.4.1 \
    joblib \
    ks3sdk \
    scikit-learn==0.20.4 \
    scikit-image==0.14.5 \
    nbexamples==0.3.1 \
    cloudpickle==0.8 \
    six==1.12.0 \
    notebook==6.0.3 \
    jupyter-console==6.0.0 \
    jupyterlab==2.2.9 \
    jupyterlab-nvdashboard \
    jupyter_contrib_nbextensions==0.5.1

RUN mkdir -p /var/run/sshd 

ARG NB_USER_ADD="kai"
ARG NB_UID_ADD="1000"
RUN useradd -d /home/$NB_USER_ADD -m -s /bin/bash -N -u $NB_UID_ADD $NB_USER_ADD

Run wget --content-disposition -O /opt/miniconda.sh http://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh && \    
    chmod +x /opt/miniconda.sh && \
    /opt/miniconda.sh -b -p /opt/conda && \
    rm /opt/miniconda.sh && \
    chown kai:1000 /opt/conda/envs && \
    /opt/conda/bin/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \
    /opt/conda/bin/conda config --system --prepend channels conda-forge && \
    /opt/conda/bin/conda config --system --set auto_update_conda false && \
    /opt/conda/bin/conda config --system --set show_channel_urls true && \
    /opt/conda/bin/conda config --system --set channel_priority strict

RUN mkdir /tmp/openmpi && \ 
    cd /tmp/openmpi && \ 
    wget https://www.open-mpi.org/software/ompi/v4.0/downloads/openmpi-4.0.0.tar.gz && \
    tar zxf openmpi-4.0.0.tar.gz && \ 
    cd openmpi-4.0.0 && \ 
    ./configure --enable-orterun-prefix-by-default && \ 
    make -j $(nproc) all && \ 
    make install && \ 
    ldconfig && \ 
    rm -rf /tmp/openmpi

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈