0

我必须使用 Docker 捆绑我的系统。但是我的系统使用 Java(运行 JAR 文件)和 python 和 PyTorch。我最初尝试使用openjdk:buster基础 Docker 映像,然后在其上安装了 python3。所以 JAR 和 PyTorch 都可以工作,但 PyTorch 只支持 CPU。但现在我必须使用 GPU 加速我的 PyTorch 代码,为此我需要 NVIDIA-Cuda。在一个单独的 Docker 中,我发现nvidia/cuda:10.2-base-ubuntu18.04适用于我的 PyTorch。但是这个 Docker 不能运行 JAR 文件。

所以我被困在结合这两个。我要么想

  1. 将 NVIDIA-Cuda 依赖项安装到 openjdk Docker 基础映像
  2. 将 openjdk ( openjdk-14 ) 依赖安装到 NVIDIA-Cuda Docker 基础镜像

有人对我如何做到这一点或任何替代黑客有任何建议吗?

4

1 回答 1

1

通过创建自己的使用 nvidia 映像的 docker 映像并在其上安装 java,您可以拥有一个映像,而不是两个映像。即有一个 Dockerfile 如下

FROM nvidia/cuda:10.2-base-ubuntu18.04

RUN apt-get update
RUN apt-get install openjdk-14-jdk

COPY <your jar file> <a path>
CMD [ "java" "other java flags/args>" "-jar" "<path to your jar file>"]

docker build像往常一样在该 Dockerfile 上运行docker run,并且您的 java 代码应该可以访问 NVIDIA-Cuda。(另请注意,有些人更喜欢 ENTRYPOINT 到 CMD)

于 2021-10-22T12:51:46.843 回答