docker 配置使用宿主机的GPU(ubuntu16.04+cuda10.0+cudnn7)
https://www.cnblogs.com/qinlulu/p/14671420.htmlhttps://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#dockerhttps://docs.nvidia.com/datacenter/cloud-native/container-tool
1. 安装 Docker
- 卸载旧版本
Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
- 安装新版本
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
其它安装方式请参考:
https://docs.docker.com/engine/install/ubuntu/
2. 安装 nvidia-docker
- 若
docker
版本 > 19.03 则不需要安装nvidia-docker
,只需要安装nvidia-container-tookit
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
验证安装是否成功
sudo docker run --rm --gpus all nvidia/cuda:10.0-base nvidia-smi
输出结果:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.93 Driver Version: 410.93 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| 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 1080 On | 00000000:01:00.0 Off | N/A |
| 37% 22C P8 14W / 180W | 0MiB / 8119MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 1080 On | 00000000:82:00.0 Off | N/A |
| 37% 20C P8 9W / 180W | 0MiB / 8119MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
其它测试命令,详情参考:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html
#### Test nvidia-smi with the latest official CUDA image
docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
# Start a GPU enabled container on two GPUs
docker run --gpus 2 nvidia/cuda:10.0-base nvidia-smi
# Starting a GPU enabled container on specific GPUs
docker run --gpus '"device=1,2"' nvidia/cuda:10.0-base nvidia-smi
docker run --gpus '"device=UUID-ABCDEF,1"' nvidia/cuda:10.0-base nvidia-smi
# Specifying a capability (graphics, compute, ...) for my container
# Note this is rarely if ever used this way
docker run --gpus all,capabilities=utility nvidia/cuda:10.0-base nvidia-smi
- 若
docker
版本 < 19.03,则需要安装nvidia
官方提供的nvidia-docker
NVIDIA Docker
地址:
https://github.com/NVIDIA/nvidia-docker
https://www.cnblogs.com/qinlulu/p/14671420.html
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker
3. 下载cuda/nvidia-ubuntu镜像
docker
镜像官网:https://hub.docker.com/ ,输入 nvidia/cuda
选择对应的版本。
4. 使用 Dockerfile 构建镜像
直接基于 nvida/cuda
,使用 DockerFile
构建一个镜像
docker build -t docker_image_name .
DockerFile
内容:
FROM nvidia/cuda:10.0-cudnn7-runtime-ubuntu16.04
RUN cat /etc/apt/sources.list && apt-get clean && apt-get -y update --fix-missing
RUN apt-get -y install python3.6 python3-pip && ln -s /usr/bin/python3.6 /usr/bin/python && ln -s /usr/bin/pip3 /usr/bin/pip
RUN apt-get install -y libsm6 libxrender1 libxext-dev
#安装需要的库
RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ web.py torch==1.3.1 torchvision==0.4.2 opencv-python scipy flask
RUN apt-get clean && rm -r ~/.cache/pip
其它 Dockerfile
# BASE IMAGE
FROM nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
SHELL ["/bin/bash","-c"]
WORKDIR /tmp
# copy安装文件
COPY Python-3.6.9.tar.xz /tmp
# 设置 root 密码
RUN echo 'root:password' | chpasswd \
# 安装openssh-server 并配置
&& apt-get update && apt-get -y install openssh-server \
&& sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config \
&& sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
&& mkdir /var/run/sshd \
# 安装python依赖包
&& apt-get -y install build-essential python-dev python-setuptools python-pip python-smbus \
&& apt-get -y install build-essential libncursesw5-dev libgdbm-dev libc6-dev \
&& apt-get -y install zlib1g-dev libsqlite3-dev tk-dev \
&& apt-get -y install libssl-dev openssl \
&& apt-get -y install libffi-dev \
# 安装python 3.6.9
&& mkdir -p /usr/local/python3.6 \
&& tar xvf Python-3.6.9.tar.xz \
&& cd Python-3.6.9 \
&& ./configure --prefix=/usr/local/python3.6 \
&& make altinstall \
# 建立软链接
&& ln -snf /usr/local/python3.6/bin/python3.6 /usr/bin/python3 \
&& ln -snf /usr/local/python3.6/bin/pip3.6 /usr/bin/pip3\
# 安装pytorch
&& mkdir ~/.pip && echo -e '[global] \nindex-url = https://mirrors.aliyun.com/pypi/simple/' >> ~/.pip/pip.conf \
&& pip3 install torch===1.2.0 torchvision===0.4.0 -f https://download.pytorch.org/whl/torch_stable.html \
# 清理copy的安装文件
&& apt-get clean \
&& rm -rf /tmp/* /var/tmp/*
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
参考:
https://www.cnblogs.com/qinlulu/p/14671420.html
https://www.cnblogs.com/shoufu/p/12904832.html
https://blog.csdn.net/weixin_43590796/article/details/114848742#commentBox
更多推荐
所有评论(0)