Docker 配置 nvidia-docker 和 pytorch 的一些想法
linux 如 Debia 或CentOS 下 Docker 安装
参考Docker Community Edition 镜像使用帮助
自动安装
Docker 提供了一个自动配置与安装的脚本,支持 Debian、RHEL、SUSE 系列及衍生系统的安装。
以下内容假定
- 您为 root 用户,或有 sudo 权限,或知道 root 密码;
- 您系统上有 curl 或 wget
export DOWNLOAD_URL="https://mirrors.bfsu.edu.cn/docker-ce"
# 如您使用 curl
curl -fsSL https://get.docker.com/ | sh
# 如您使用 wget
wget -O- https://get.docker.com/ | sh
这里抄下ubuntu的安装方法
以下内容根据 官方文档 修改而来。
如果你过去安装过 docker,先删掉:
# 如果你过去安装过 docker,先删掉:
sudo apt-get remove docker docker-engine docker.io containerd runc# 首先安装依赖:sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common# 根据你的发行版,下面的内容有所不同。你使用的发行版:ubuntu
# 信任 Docker 的 GPG 公钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 添加软件仓库:echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.bfsu.edu.cn/docker-ce/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 组添加用户,设置允许普通用户操作 docker
1、 首先创建docker用户组,如果docker用户组存在可以忽略
sudo groupadd docker
2、把用户添加进docker组中
sudo gpasswd -a ${USER} docker
3、重启docker
sudo service docker restart
4、如果普通用户执行docker命令,如果提示get …… dial unix /var/run/docker.sock权限不够,则修改/var/run/docker.sock权限 使用root用户执行如下命令,即可
sudo chmod a+rw /var/run/docker.sock
windows 下安装英伟达驱动 WSL下安装cuda等
英伟达驱动 官网
WSL下建议安装最新的驱动 可以WSL 调用GPU驱动 (建议:最新版即可)
nvidia-smi #查看显卡信息 测试是否正确安装显卡
英伟达 cuda仓库 cuda不必和nvidia-smi显示的版本一致,但是建议要接近
这里是官网 cuda 11.8
# Download Installer for Linux WSL-Ubuntu 2.0 x86_64
# 这里是 run 文件的 安装代码
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run# 这里是 deb文件安装代码wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
安装完成后
这里还不可以使用nvcc -V
以下为设置环境变量
# nvcc -V 的设置sudo vim .bashrc# 在 .bashrc 最后添加以下内容
export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
#此处 11.8 和你安装的cuda版本一致# 按下 ESC 后 输入 :wq 确认source .bashrc
#确认更新# 输入nvcc -V查看cuda
nvcc -V
测试 检查是否可以直接调用GPU
$ sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
Thu Nov 24 07:26:40 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 520.56.05 Driver Version: 522.25 CUDA Version: 11.8 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A |
| 48% 28C P8 7W / 170W | 32MiB / 12288MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 23 G /Xwayland N/A |
| 0 N/A N/A 34 G /Xwayland N/A |
| 0 N/A N/A 34 G /Xwayland N/A |
+-----------------------------------------------------------------------------+
--gpus all 这里是调用GPU 必须的代码
补充内容
/etc/docker/daemon.json 参数详解
{"authorization-plugins": [],"data-root": "", #Docker运行时使用的根路径,根路径下的内容稍后介绍,默认/var/lib/docker"dns": [], #设定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看"dns-opts": [],#容器 /etc/resolv.conf 文件,其他设置"dns-search": [],#设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的 主机时,DNS不仅搜索host,还会搜索host.example.com。注意:如果不设置,Docker 会默认用主机上的 /etc/resolv.conf来配置容器。"exec-opts": [],"exec-root": "","experimental": false,"features": {},"storage-driver": "","storage-opts": [],"labels": [],#docker主机的标签,很实用的功能,例如定义:–label nodeName=host-121"live-restore": true,"log-driver": "","log-opts": {},"mtu": 0,"pidfile": "",#Docker守护进程的PID文件"cluster-store": "","cluster-store-opts": {},"cluster-advertise": "","max-concurrent-downloads": 3,"max-concurrent-uploads": 5,"default-shm-size": "64M","shutdown-timeout": 15,"debug": true, #启用debug的模式,启用后,可以看到很多的启动信息。默认false"hosts": [],#设置容器hosts"log-level": "","tls": true, #默认 false, 启动TLS认证开关"tlscacert": "", #默认 ~/.docker/ca.pem,通过CA认证过的的certificate文件路径"tlscert": "", #默认 ~/.docker/cert.pem ,TLS的certificate文件路径"tlskey": "",#默认~/.docker/key.pem,TLS的key文件路径"tlsverify": true,#默认false,使用TLS并做后台进程与客户端通讯的验证"tls": true,"tlsverify": true,"tlscacert": "","tlscert": "","tlskey": "","swarm-default-advertise-addr": "","api-cors-header": "","selinux-enabled": false, #默认 false,启用selinux支持"userns-remap": "","group": "",#Unix套接字的属组,仅指/var/run/docker.sock"cgroup-parent": "","default-ulimits": {"nofile": {"Name": "nofile","Hard": 64000,"Soft": 64000}},"init": false,"init-path": "/usr/libexec/docker-init","ipv6": false,"iptables": false,"ip-forward": false,#默认true, 启用 net.ipv4.ip_forward ,进入容器后使用sysctl -a|grepnet.ipv4.ip_forward查看"ip-masq": false,"userland-proxy": false,"userland-proxy-path": "/usr/libexec/docker-proxy","ip": "0.0.0.0","bridge": "","bip": "","fixed-cidr": "","fixed-cidr-v6": "","default-gateway": "","default-gateway-v6": "","icc": false,"raw-logs": false,"allow-nondistributable-artifacts": [],"registry-mirrors": [],#镜像加速的地址,增加后在 docker info中可查看。"seccomp-profile": "","insecure-registries": [],#配置docker的私库地址"no-new-privileges": false,"default-runtime": "runc","oom-score-adjust": -500,"node-generic-resources": ["NVIDIA-GPU=UUID1", "NVIDIA-GPU=UUID2"],"runtimes": {"cc-runtime": {"path": "/usr/bin/cc-runtime"},"custom": {"path": "/usr/local/bin/my-runc-replacement","runtimeArgs": ["--debug"]}},"default-address-pools":[{"base":"172.80.0.0/16","size":24},{"base":"172.90.0.0/16","size":24}]
}
设置国内镜像源代理
在 /etc/docker/daemon.json 文件 添加以下内容
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/","http://hub-mirror.c.163.com"]
安装nvidia-docker
# Setup the package repository and the GPG key
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \&& 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/$distribution/libnvidia-container.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# Install the nvidia-docker2 package (and dependencies) after updating the package listing
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
# Restart the Docker daemon to complete the installation after setting the default runtime
$ sudo systemctl restart docker
# test
$ sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
报错及解决
1、gpg: 找不到有效的 OpenPGP数据
可能原因:不能访问 https://nvidia.github.io/libnvidia-container/gpgkey
解决:打开此网址,会自动下载 gpgkey 文件,之后 cd 到下载路径下运行
sudo apt-key add gpgkey
成功后会输出 OK
2、E: 无法定位软件包 nvidia-docker2
原因:
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
在这条命令中读取 https://nvidia.github.io/libnvidia-container/ubuntu20.04/libnvidia-container.list 这个网址内的信息并写到 /etc/apt/sources.list.d/nvidia-docker.list 文件中。查看本地相应文件,发现该文件为空,说明在写入文件时出现了问题,可能与文件权限有关,从而影响了下载源的更新。
解决:访问上述地址,复制网址中的文本,通过 sudo vim 写入到本地的相应文件。
注意:
1、$distribution 需要替换为相应系统版本号,如上面链接中的 ubuntu20.04。
2、对于 1.6.0 之前的 NVIDIA Container Toolkit 版本,应使用 nvidia-docker 存储库而不是上面的 libnvidia-container 存储库。
之后按照官方的方法安装和测试。
# Install the nvidia-docker2 package (and dependencies) after updating the package listing
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
# Restart the Docker daemon to complete the installation after setting the default runtime
$ sudo systemctl restart docker
# test
$ sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi# 最后一行有 --gpus all 才能正确调用 GPU驱动
Docker 配置 nvidia-docker 和 pytorch 的一些想法相关推荐
- 【快速安装Docker服务及Docker配置、Docker常用命令。】
一.安装docker服务 命令行输入curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun即可快速安装 如提示curl: ...
- docker挂载NVIDIA显卡运行pytorch
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 写在前面: 请参考之前的文章安装好CentOS.NVIDIA相关驱动及软件.docker及加速 ...
- docker挂载NVIDIA显卡
from:docker挂载NVIDIA显卡运行pytorch 写在前面: 请参考之前的文章安装好CentOS.NVIDIA相关驱动及软件.docker及加速镜像. 主机运行环境 $ uname -a ...
- docker anaconda_深度学习炼丹炉配置[1] Docker+sshfs环境配置
感谢 @田文善 同学供稿 目录 一.需求二.方案(一)docker 配置1.dockerfile 制作2.构建 docker 镜像3.运行 docker 容器4.使用 docker 容器5.环境复用( ...
- docker配置daemon
系列文章目录 CentOS8安装docker docker配置daemon docker部署kettel 目标: docker配置daemon 前言 linux版本:CentOs8 docker版本: ...
- 利用 Docker 配置 Pytorch 镜像流程
目录 假设你已经安装好了Ubuntu 1 安装 Docker 2 安装 Pytorch 镜像 假设你已经安装好了Ubuntu 1 安装 Docker 打开终端,先更新下apt sudo apt-get ...
- docker 配置使用宿主机的GPU(ubuntu16.04+cuda10.0+cudnn7)
1. 安装 Docker 卸载旧版本 Docker sudo apt-get remove docker docker-engine docker.io containerd runc 安装新版本 s ...
- nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境
tensorflow和pytorch官方都维护了不同版本的docker镜像.借助docker我们可以方便的搭建起深度学习实验环境. 但是想要在同一个容器内同时拥有tensorflow.pytorch. ...
- 如何使用docker配置深度学习开发环境
文章目录 1.底层驱动的安装 1.1 操作系统的安装 1.2 显卡驱动的安装 1.3 cuda的安装 2.使用docker配置深度学习开发环境 2.1 docker的安装 2.2 nvidia_doc ...
最新文章
- 使用WindowsLive Writer2012和officeWord2013发布到博客园全面总结
- 【IM】关于稀疏学习和鲁棒学习的理解
- 常用的消息摘要算法小总结
- 【程序的流程】—— 顺序 / 分支 / 循环
- oozie JAVA Client 编程提交作业
- linux免密码登录失败,ssh 免密码登录失败
- 软件开发过程模型——喷泉模型
- Python Re正则表达式之group(0)、group(1)
- 2021年安徽省大数据与人工智能应用竞赛大数据-本科组赛题
- 【百战GAN】StyleGAN原理详解与人脸图像生成代码实战
- matlab输入数据作方程,用MATLAB函数编写并求解微分方程
- 简述网桥的特点_网桥的工作原理和特点是什么?
- UE4,UE5虚幻引擎源码版下载
- jq 移动端网页分享功能_js实现QQ、微信、新浪微博分享功能
- [工具集]介绍一波我常用的小工具
- MTI动目标指示和MTD动目标检测
- 如何把一组计算机做成云,怎样才能把旧电脑变成云电脑呢?
- 智力风暴(经典智力题)
- 一起来看流星雨-------张翰
- IOC和DI浅显易懂的理解
热门文章
- 逆序字符串 和 字符串的逆序输出 的区别~
- FX110网:鳄鱼线(Alligator)指标的操作应用
- 2019年了桌面CPU还吊打笔记本CPU?真相了
- 手机二维码软件及资源大汇总
- 令克软件再推OpenAPI与MAS系统服务,强大引擎赋能券商多元化发展
- WINDOWS下多个桌面切换
- 浙大 | PTA 习题5-6 使用函数输出水仙花数 (20分)
- cad拉伸命令怎么用_如何用AutoCAD搞定三维斜齿轮
- python 语义similarity_GitHub - samelltiger/word_similarity: 基于《知网》的语义相似度计算 python2.7 API...
- [MySQL 工具] pt-query-digest使用出错问题分析Can't locate Time/HiRes.pm in @INC