在安装docker-ce、nvidia-docker2之前可以先把cuda_10.1.105_418.39_linux.run显卡驱动先安装好
安装必须软件
yum install gcc kernel-headers kernel-devel -y
禁止nouveau
cp /local-repo/nvidia-installer-disable-nouveau.conf /etc/modprobe.d/
重建initramfs image文件
dracut --force
系统重启
reboot
验证是否禁止成功
lsmod | grep nouveau #无结果显示即为成功,如果还显示可以百度下,因为每个版本的操作系统可能有所不一样
安装驱动
./cuda_10.1.105_418.39_linux.run
安装好以后输入nvidia-smi显示以下说明GPU驱动安装完成,注意在安装cuda_10.1.105_418.39_linux.run显卡时可能会进入一个GPU驱动安装界面通过上下键移动到install安装上回车即可安装。
安装docker-ce和nvidia-docker2:
CentOS7.5-nvidiace-nvidia-docker2资源下载地址:
https://download.csdn.net/download/weixin_40754332/12667592
使用root用户执行解压缩
unzip CentOS7.5-nvidiace-nvidia-docker2.zip -d /
安装createrepo
rpm -ivh /local-repo/docker/createrepo-0.9.9-28.el7.noarch.rpm
备份系统默认源
cd /etc/yum.repos.d/
mkdir repobak
mv *.repo repobak/
创建本地源
cp /local-repo/local.repo /etc/yum.repos.d/ ---注意路径要根据自己实际情况调整目录路径
createrepo /local-repo/docker
createrepo /local-repo/libnvidia-container
createrepo /local-repo/nvidia-container-runtime
createrepo /local-repo/nvidia-docker
yum clean all
yum makecache
安装docker-ce和nvidia-docker2
yum install docker-ce nvidia-docker2
设置nvidia docker runtime
mkdir -p /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF
tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
EOF
重启docker:
pkill -SIGHUP dockerd
systemctl daemon-reload
systemctl restart docker
添加用户到docker组
gpasswd -a $USER docker
newgrp docker
查看 GPU 信息并拉取GPU镜像
nvidia-docker run --rm nvidia/cuda:10.1-base nvidia-smi
最后在说一下关于docker使用的一些命令:
将docker镜像迁移到其他服务器
如A服务器镜像迁移到B服务器:
服务器A:docker save -o xxx.tar 迁移镜像名:版本 --xxx.tar是自定义文件名
服务器A:scp xxx.tar [email protected]服务器ip:/root/
服务器B:docker load -i xxx.tar
迁移完成可使用docker images 查看是否迁移成功。 --前提另外一台也安装了docker环境
docker安装目录迁移
将docker从默认/var/lib/目录迁移到/data/目录下,迁移之前先关闭docker,systemctl stop docker
1、在/data目录下新建docker目录
2、切换到/var/lib/目录,把原先的docker目录进行备份 mv docker docker07
3、在/data目录下创建软连接ln -s /data/docker/ /var/lib/
4、切换到/var/lib/下查看软链接并把之前备份的docker07在还原回去,mv docker07/* docker,
5、在cd /data/docker目录下就能查看到同步的信息了,
6、在重启docker,systemctl start docker
7、完成
dockerfile编写格式:
这是本地nginx的dockerfile文件编写格式
[[email protected] ASR]# more Dockerfile
FROM nvidia/cuda:10.1-base
MAINTAINER dwzhao2 [email protected]
WORKDIR /data/ASR/
COPY ./nginx.tar ./nginx.tar
RUN tar xvf nginx.tar
WORKDIR /data/ASR/nginx/nginx_bin/sbin
RUN chmod +x nginx
ENTRYPOINT ["/data/ASR/nginx/nginx_bin/sbin/nginx", "-g", "daemon off;"]
[[email protected] ASR]# more Dockerfile
FROM nvidia/cuda:10.1-base
MAINTAINER dwzhao2 [email protected]
WORKDIR /data/ASR/
COPY ./route.tar ./route.tar
RUN tar xvf route.tar
WORKDIR /data/ASR/route/bin
#RUN chmod +x start.sh
CMD ["/data/ASR/route/bin/route"]
以nginx为例,编写完成以后可以在dockerfile当前目录执行
docker build -t nginx:v1 . --进行镜像打包
打包完成后使用docker run 启动和创建容器(也可以使用nvidia-docker run,具体可以根据实际情况看哪个组件调用GPU,不调用GPU的组件可以使用docker run ,最新版本的docker 20可以不使用nvidia-docker,我这个版本是docker 18版本因此需要)
docker run --net=host -d -v /data/ASR/nginx/nginx_bin/conf/nginx.conf:/data/ASR/nginx/nginx_bin/conf/nginx.conf --name=nginx61 nginx:v1
---注意, --net=host是将宿主机和容器网络进行共享,这样就不用将nginx端口在进行映射,就可以使用了,-v是挂载的nginx目录或文件
--name是容器命名,后面的是镜像名和版本号
其它一些基础命令可以自行百度,谢谢,