docker环境基于ubuntu22.04镜像安装conda

984 阅读2分钟

1.Dockerfile

# 使用Ubuntu 22.04作为基础镜像
FROM ubuntu:22.04

# 设置环境变量以避免交互式配置
ENV DEBIAN_FRONTEND=noninteractive

# 修改APT源为清华大学的镜像源
RUN sed -i 's|http://archive.ubuntu.com/ubuntu|http://mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list && \
    sed -i 's|http://security.ubuntu.com/ubuntu|http://mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list

# 更新包列表并安装必要的依赖
RUN apt-get update && \
    apt-get install -y --no-install-recommends tzdata \
    wget \
    bzip2 \
    libgl1-mesa-glx \
    software-properties-common \
    build-essential \
    zlib1g-dev \
    libbz2-dev \
    libssl-dev \
    libncurses5-dev \
    libncursesw5-dev \
    libreadline-dev \
    libsqlite3-dev \
    libgdbm-dev \
    libdb5.3-dev \
    liblzma-dev \
    tk-dev \
    libffi-dev \
    curl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 设置时区为上海时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
     echo "Asia/Shanghai" > /etc/timezone

# 下载并安装Miniconda
RUN wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
    bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh

# 配置conda环境变量
ENV PATH=/opt/conda/bin:$PATH

# 将conda源设置为清华源
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

# 初始化conda shell
RUN conda init bash

# 设置默认shell为连接conda的shell
SHELL ["/bin/bash", "-c"]

# 设置默认命令
CMD ["/bin/bash"]
# 使用Ubuntu 22.04作为基础镜像
FROM ubuntu:22.04

# 设置环境变量以避免交互式配置
ENV DEBIAN_FRONTEND=noninteractive \
    LANG=zh_CN.UTF-8 \
    LANGUAGE=zh_CN:en \
    LC_ALL=zh_CN.UTF-8

# 修改APT源为清华大学的镜像源
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.tuna.tsinghua.edu.cn/ubuntu/|g' /etc/apt/sources.list && \
    sed -i 's|http://security.ubuntu.com/ubuntu|http://mirrors.tuna.tsinghua.edu.cn/ubuntu|g' /etc/apt/sources.list

# 更新包列表并安装必要的依赖 + 中文语言包和字体
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        tzdata \
        wget \
        bzip2 \
        libgl1-mesa-glx \
        software-properties-common \
        build-essential \
        zlib1g-dev \
        libbz2-dev \
        libssl-dev \
        libncurses5-dev \
        libncursesw5-dev \
        libreadline-dev \
        libsqlite3-dev \
        libgdbm-dev \
        libdb5.3-dev \
        liblzma-dev \
        tk-dev \
        libffi-dev \
        curl \
        locales \
        language-pack-zh-hans \
        fonts-wqy-zenhei \
        fontconfig && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# 设置时区为上海时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone

# 生成中文 locale 支持
RUN locale-gen zh_CN.UTF-8 && \
    update-locale LANG=zh_CN.UTF-8

# 验证 locale 是否正确生成(可选)
RUN locale

# 下载并安装Miniconda
RUN wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
    bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh

# 配置conda环境变量
ENV PATH=/opt/conda/bin:$PATH

# 将conda源设置为清华源
RUN conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ && \
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ && \
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

# 初始化conda shell
RUN conda init bash

# 设置默认shell为连接conda的shell
SHELL ["/bin/bash", "-c"]

# 设置默认命令
CMD ["/bin/bash"]


2.构建容器 docker build -t conda .

3.容器构建完成后进入容器安装需要的环境 docker run -it conda /bin/base

4.基于构建好的镜像安装环境

  • 4.1 python3.10 + open3d

FROM conda
WORKDIR /python3.10

ENV TZ=Asia/Shanghai
ENV PATH /opt/conda/envs/python3.10/bin:$PATH
ENV CONDA_DEFAULT_ENV python3.10
COPY requirements.txt /python3.10/requirements.txt

RUN conda create --name python3.10 python=3.10 \
    && echo "conda activate python3.10" >> ~/.bashrc \
    && conda install open3d==0.18.0 -y \
    && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
    && pip install --no-cache-dir -r /python3.10/requirements.txt

SHELL ["/bin/bash", "-c"]
addict==2.4.0
ansi2html==1.8.0
asttokens==2.4.1
blinker==1.7.0
click==8.1.7
comm==0.2.0
ConfigArgParse==1.7
contourpy==1.2.0
cycler==0.12.1
dash==2.14.1
dash-core-components==2.0.0
dash-html-components==2.0.0
dash-table==5.0.0
decorator==5.1.1
exceptiongroup==1.1.3
executing==2.0.1
fastjsonschema==2.19.0
Flask==3.0.0
fonttools==4.44.0
ipython==8.17.2
ipywidgets==8.1.1
itsdangerous==2.1.2
jedi==0.19.1
Jinja2==3.1.2
joblib==1.3.2
jupyter_core==5.5.0
jupyterlab-widgets==3.0.9
kiwisolver==1.4.5
MarkupSafe==2.1.3
matplotlib==3.8.1
matplotlib-inline==0.1.6
meshlib==3.0.6.229
meshio==5.3.4
nbformat==5.7.0
nest-asyncio==1.5.8
numpy==1.26.2
opencv-python==4.8.1.78
packaging==23.2
pandas==2.1.3
parso==0.8.3
Pillow==10.1.0
platformdirs==4.0.0
plotly==5.18.0
pooch==1.8.0
prompt-toolkit==3.0.41
pure-eval==0.2.2
Pygments==2.16.1
pyntcloud==0.3.1
pyquaternion==0.9.9
python-dateutil==2.8.2
pyvista==0.44.2
retrying==1.3.4
scikit-learn==1.3.2
scipy==1.11.3
scooby==0.9.2
stack-data==0.6.3
tenacity==8.2.3
threadpoolctl==3.2.0
tqdm==4.66.1
traitlets==5.13.0
typing_extensions==4.8.0
tzdata==2023.3
wcwidth==0.2.10
Werkzeug==3.0.1
widgetsnbextension==4.0.9
pip==23.1.2
fastapi==0.115.8
uvicorn
mysql-connector-python
pymeshlab==2023.12.post3
gunicorn==23.0.0
  • 4.2构建镜像 docker build -t conda:python3.10 .
  • 4.3 python3.8 + open3d + openjre8
FROM conda
WORKDIR /python3.8

ENV TZ=Asia/Shanghai
ENV PATH /opt/conda/envs/python3.8/bin:$PATH
ENV CONDA_DEFAULT_ENV python3.8
COPY requirements.txt /python3.8/requirements.txt

#多环境
#RUN conda create --name python3.10 python=3.10 -y && \
#    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
#    /opt/conda/envs/python3.10/bin/pip install meshlib==3.0.6.229 pymeshlab==2023.12.post3

RUN conda create --name python3.8 python=3.8 \
    && echo "conda activate python3.8" >> ~/.bashrc \
    && conda install open3d==0.18.0 -y \
    && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
    && pip install --no-cache-dir -r /python3.8/requirements.txt

# 安装 OpenJDK 8
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    openjdk-8-jre \
    file\
    && rm -rf /var/lib/apt/lists/*

# 设置 JAVA_HOME 环境变量
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
ENV PATH=$JAVA_HOME/bin:$PATH

SHELL ["/bin/bash", "-c"]
addict==2.4.0
ansi2html==1.8.0
asttokens==2.4.1
blinker==1.7.0
click==8.1.7
comm==0.2.0
ConfigArgParse==1.7
contourpy==1.1.1
cycler==0.12.1
dash==2.14.1
dash-core-components==2.0.0
dash-html-components==2.0.0
dash-table==5.0.0
decorator==5.1.1
exceptiongroup==1.1.3
executing==2.0.1
fastjsonschema==2.19.0
Flask==3.0.0
fonttools==4.44.0
ipython==8.12.3
ipywidgets==8.1.1
itsdangerous==2.1.2
jedi==0.19.1
Jinja2==3.1.2
joblib==1.3.2
jupyter_core==5.5.0
jupyterlab-widgets==3.0.9
kiwisolver==1.4.5
MarkupSafe==2.1.3
matplotlib==3.7.5
matplotlib-inline==0.1.6
meshlib==2.4.4.153
meshio==5.3.4
nbformat==5.7.0
nest-asyncio==1.5.8
numpy==1.24.4
opencv-python==4.8.1.78
packaging==23.2
pandas==2.0.3
parso==0.8.3
Pillow==10.1.0
platformdirs==4.0.0
plotly==5.18.0
pooch==1.8.0
prompt-toolkit==3.0.41
pure-eval==0.2.2
Pygments==2.16.1
pyntcloud==0.3.1
pyquaternion==0.9.9
python-dateutil==2.8.2
pyvista==0.44.2
retrying==1.3.4
scikit-learn==1.3.2
scipy==1.10.1
scooby==0.9.2
stack-data==0.6.3
tenacity==8.2.3
threadpoolctl==3.2.0
tqdm==4.66.1
traitlets==5.13.0
typing_extensions==4.8.0
tzdata==2023.3
vtk==9.3.0
wcwidth==0.2.10
Werkzeug==3.0.1
widgetsnbextension==4.0.9
pip==23.1.2
fastapi==0.115.8
uvicorn
mysql-connector-python
  • 4.4 构建镜像 docker build -t conda:jre-python3.8 .