Как стать автором
Обновить

Комментарии 4

Всегда используйте в Docker-образе те же версии CUDA и cuDNN, что и на хостовой машине.
Вроде же версия CUDA в контейнере и на хосте не связаны? Контейнер, используя свою версию CUDA, обращается к драйверу видеокарты через Nvidia Runtime. Запускал различные варианты докер-образов с разными версиями CUDA, в системе только CUDA 10.1. Если не прав, поправьте.
Насколько я знаю, правильным будет сначала добавлять файл с зависимостями pip, потом устанавливать зависимости, потом добавлять остальной проект. Так будет работать кеширование слоёв и зависимости не будут устанавливаться каждый раз.

В идеале, нужно закреплять все зависимости pip (в том числе сам pip в Dockerfile, либо не обновлять его вовсе), используя pipenv или poetry: никогда не знаешь, что там сломают в зависимостях зависимостей проекта (недавний пример — github.com/ipython/ipython/issues/12740).

Есть ещё моменты, которые подскажет hadolint (например, стоит закреплять версии deb-пакетов и использовать apt-get, а не apt).

apt clean && rm -rf /var/lib/apt/lists/*


Official Debian and Ubuntu images automatically run apt-get clean, so explicit invocation is not required.
Насколько знаю это не самый эффективный порядок выполнения команд
COPY ./req.txt /req.txt
COPY ./src /src

RUN pip3 install --no-cache-dir -r /req.txt

Вот так вот должно быть лучше, т.к. список зависимостей меняется не всегда, а вот код приложения постоянно
COPY ./req.txt /req.txt
RUN pip3 install --no-cache-dir -r /req.txt
COPY ./src /src
Зарегистрируйтесь на Хабре, чтобы оставить комментарий