在服务器摆设Nvidia-Docker全流程,附Dockerfile
在服务器摆设Nvidia-Docker全流程,附Dockerfile在服务器使用docker可以使管理员能够对服务器用户进行更便捷的管理,相比于基于anaconda环境的管理,用户之间不共享工作空间,管理员只对用户暴露服务器端口和数据集,用户可以自界说参与密码,安全性更高。Nvidia-Docker已经更新至Nvidia-Container-Toolkit,使用更加轻便。本文分别给出了当前版本基于镜像与Dockerfile在服务器摆设Nvidia-Docker的全部流程,推荐使用dockerfile。
https://i-blog.csdnimg.cn/blog_migrate/5d13b9baca44c82cb32e9fbf7db6cba3.png
主机依赖安装
Docker安装
扫除现有的docker相干包
[*]for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
设置apt的docker堆栈
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
安装最新版docker
[*]sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
验证安装
[*]sudo docker run hello-world
Nvidia-docker安装
设置apt堆栈
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
安装Nvidia Container Toolkit
[*]sudo apt-get install -y nvidia-container-toolkit
配置Docker
[*]sudo nvidia-ctk runtime configure --runtime=docker
重启Docker
[*]sudo systemctl restart docker
制作通用的nvidia-docker 镜像
拉取镜像
[*]docker pull nvidia/cuda:11.4.3-cudnn8-devel-ubuntu20.04
[*]注意拉取带cudnn,devel版本的镜像,否则没有nvcc
检察镜像id
[*]docker images
删除镜像
[*]docker rmi
创建nvidia-docker 容器
[*]sudo docker run -dit --runtime=nvidia --gpus all -p :22 -v /dataset:/dataset --privileged=true --name=
[*]-dit:后台运行,分配interactive terminal
[*]--gpus:可以使用以下参数:all,none,0,1,2
检察container id
[*]docker ps -a
进入container
[*]sudo docker exec -it /bin/bash
[*]检查cuda与nvidia driver
[*]nvcc -V
[*]nvidia-smi
Container 操作
[*]启动:sudo docker start
[*]停止:sudo docker stop
[*]重启:`sudo docker restart
[*]容器内退出:exit
配置container的ssh服务
[*]apt-get update
[*]apt-get install openssh-server
[*]apt-get install openssh-client
[*]apt-get install ssh
[*]apt-get install vim
SSH配置
修改ssh文件信息,允许root用户使用ssh登录。
[*]vim /etc/ssh/sshd_config
[*]insert i
[*]PermitRootLogin yes
[*]:wq
重启ssh
[*]/etc/init.d/ssh restart
设置毗连密码
[*]passwd
%% ### 设置开机自启动SSH服务
[*]vim /root/.bashrc
[*]插入:service ssh start %%
注意:
出现现象在exec时添加进容器的环境变量在通过ssh启动时找不到,缘故原由是exec时自动加了一些环境变量。解决方案就是改.bashrc,把丢失的环境变量加上。
[*]vim ~/.bashrc
[*]在最后加入
[*]export PATH="/usr/local/cuda/bin:$PATH"
[*]export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
安装Anaconda
[*]首先从官网得到Anaconda for Linux的安装链接
[*]使用wget下载,wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
[*]使用bash安装,bash Anaconda3-2024.02-1-Linux-x86_64.sh
[*]将conda写入环境变量
[*]vim ~/.bashrc
[*]插入
[*]export PATH="~/anaconda3/bin":$PATH
[*]source ~/anaconda3/bin/activate
[*]source ~/.bashrc
打包镜像
[*]docker commit -a 'LiSH' :
新用户使用镜像制作自己的容器
镜像名称ubuntu20.04_cuda_11.4_cudnn8_anaconda
[*]sudo docker run -dit --runtime=nvidia --gpus all -p :22 -v /dataset:/dataset --privileged=true --name= ubuntu20.04_cuda_11.4_cudnn8_anaconda:v0.1
Dockerfile
# Basic Image
FROM nvidia/cuda:11.4.3-cudnn8-devel-ubuntu20.04
# Description
LABEL name="ubuntu20.04 cuda11.4 cudnn8"
LABEL version="1.0"
LABEL author="LiSH"
LABEL mail="li.shanghong.0222@gmail.com"
# Update
RUN apt-get update \
&& apt-get install -y vim \
&& apt-get install htop
# Config SSH
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
&& sed -i '$a service ssh restart' ~/.bashrc \
&& echo 'root:0222'|chpasswd
# Install Anaconda
RUN wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh \
&& bash Anaconda3-2024.02-1-Linux-x86_64.sh -b -p /opt/conda \
&& sed -i '$a export PATH="/opt/conda/bin:$PATH"' ~/.bashrc \
&& sed -i '$a source /opt/conda/bin/activate' ~/.bashrc
# Config Cudnn
RUN sed -i '$a export PATH="/usr/local/cuda/bin:$PATH"' ~/.bashrc \
&& sed -i '$a export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"' ~/.bashrc \
&& sed -i '$a cd /' ~/.bashrc
注意
[*]当使用Dockerfile构建docker时,执行下令apt-get install -y openssh-server时,会安装tzdata
[*]tzdata从2018开始,安装过程采用交互式,要求指定Geographic area和Time zone
[*]解决方法:在下令前添加DEBIAN_FRONTEND=noninteractive
[*]即执行DEBIAN_FRONTEND=noninteractive apt-get install -y openssh-server
使用Dockerfile构建镜像
[*]docker build -f Dockerfile -t ./
从Dockerfile构建的镜像创建容器
[*]检察镜像docker images,获取image id
[*]sudo docker run -dit --runtime=nvidia --gpus all -p :22 -v /dataset:/dataset --privileged=true --name=
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]