我是一个使用Docker构建容器的新手,我经常使用conda环境进行日常工作,但是这次我需要使用一个只允许运行Docker容器的计算服务器。我想构建一个允许我运行Pytorch代码的镜像。我准备了如下内容,一个用于深度学习应用程序的非常常见的Dockerfile:
FROM nvidia/cuda:12.2.0-devel-ubuntu20.04
CMD ["bash"]
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV SHELL=/bin/bash
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
git \
wget \
cmake \
ninja-build \
build-essential \
python3 \
python3-dev \
python3-pip \
python3-venv \
python-is-python3 \
&& apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/*
RUN apt-get install sqlite3
ENV VIRTUAL_ENV=/opt/python3/venv/base
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN python3 -m pip install --upgrade pip
RUN pip install jupyterlab
RUN python3 -m pip install pandas
RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
COPY entry_point.sh /entry_point.sh
RUN chmod +x /entry_point.sh
# Set entrypoint to bash
ENTRYPOINT ["/entry_point.sh"]
字符串
在构建容器时,我得到以下错误:
E: Unable to locate package sqlite3
型
当我删除sqlite3安装行时,镜像构建,当我运行相应的容器并尝试在CLI中使用相同的命令再次安装sqlite时,我得到了相同的错误。我使用的是基础镜像“nvidia/cuda:12.2.0-devel-ubuntu20.04“,它应该将Ubuntu 20.04环境沿着Cuda,然而,apt软件包管理器似乎找不到一个非常常用的工具,即Sqlite。我也在开始时在Dockerfile中调用了apt-get update
。不幸的是,我没有看到这里缺少了什么。我应该使用另一个基地集装箱吗
1条答案
按热度按时间jckbn6z71#
在Dockerfile中,
字符串
第一个
RUN
命令的末尾会清除APT的所有状态,因此当第二个RUN apt-get install
命令执行时,会忘记任何包的存在。在第一个
RUN
命令中,您有一个已安装软件包的列表。将sqlite3
添加到该列表中。型
增量重建会慢一些,但是如果您(或您的CI系统)从头开始构建映像,那么只调用一次APT/dpkg机制会快一些。
如果您出于某种原因确实需要将其作为单独的
RUN
行,则需要在第二个RUN
命令中重复apt-get update
。请注意,第一个RUN
命令的整体结构是有意义的,只是使用了不同的包列表。