docker用gpu的参数_docker19使用GPU

随着docker的不断升级,对GPU的支持也越来越友好,尤其是docker19.03之后,不再需要安装nvidia-docker了。只安装NVIDIA-CONTAINER-RUNTIME就可以使用了,并且支持docker-compose。

本文记录和梳理一下想要在docker中使用GPU,都需要做些什么。

1. 下载GPU的驱动

2. 安装NVIDIA-CONTAINER-RUNTIME

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)

curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | \

sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo

sudo yum install nvidia-container-runtime

3.直接使用

此时就准备好了GPU环境,在docker19下就能直接使用了,安装docker19可以参考的我的另一篇文章Centos安装docker 19。

docker run -it --rm --gpus all centos nvidia-smi

+-----------------------------------------------------------------------------+

| NVIDIA-SMI 430.40 Driver Version: 430.40 CUDA Version: N/A |

|-------------------------------+----------------------+----------------------+

| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |

| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |

|===============================+======================+======================|

| 0 GeForce GTX 108... Off | 00000000:4F:00.0 Off | N/A |

| 20% 23C P8 8W / 250W | 4426MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

| 1 GeForce GTX 108... Off | 00000000:50:00.0 Off | N/A |

| 20% 21C P8 8W / 250W | 8896MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

| 2 GeForce GTX 108... Off | 00000000:51:00.0 Off | N/A |

| 26% 23C P8 8W / 250W | 6637MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

| 3 GeForce GTX 108... Off | 00000000:52:00.0 Off | N/A |

| 20% 21C P8 8W / 250W | 6725MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

| 4 GeForce GTX 108... Off | 00000000:DB:00.0 Off | N/A |

| 20% 23C P8 8W / 250W | 4482MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

| 5 GeForce GTX 108... Off | 00000000:DC:00.0 Off | N/A |

| 20% 26C P8 8W / 250W | 4492MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

| 6 GeForce GTX 108... Off | 00000000:DD:00.0 Off | N/A |

| 20% 23C P8 8W / 250W | 8802MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

| 7 GeForce GTX 108... Off | 00000000:DE:00.0 Off | N/A |

| 20% 22C P8 8W / 250W | 2247MiB / 11178MiB | 0% Default |

+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+

| Processes: GPU Memory |

| GPU PID Type Process name Usage |

|=============================================================================|

+-----------------------------------------------------------------------------+

以上就完成了GPU的准备,可以使用了。(如果指定某一张卡可以使用选项:--gpus "device=0")

追更:使用时候发现无法使用GPU,观察docker内部和外部的区别发现CUDA Version: N/A查阅一些资料后推测是因为外部有cuda的driver接口,docker中没有,所以自己包装了带cuda的Java镜像(注意cuda版本)。

Dockerfile如下:

FROM nvidia/cuda:10.1-base

MAINTAINER scsyn

COPY ./jre1.8.0_271 /jre

ENV JRE_HOME=/jre

ENV CLASSPATH=$JRE_HOME/lib/rt.jar:$JRE_HOME/lib/ext

ENV PATH=$PATH:$JRE_HOME/bin

使用docker build -t nvidia-java:1.0.0 .打包镜像。

之后再使用的话在此基础上进行封装就可以了,比如:

FROM nvidia-java:1.0.0

MAINTAINER scsyn

COPY ./en2zh /pn

ENV LD_LIBRARY_PATH=/pn/lib

WORKDIR "/pn/bin"

ENTRYPOINT ["java","-jar","localdeployment-pn-0.0.1-SNAPSHOT.jar"]


版权声明:本文为weixin_39896617原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。