nvidia-docker踩坑记录

docker, nvidia-docker配置镜像创建容器

众所周知,想要在容器中使用nvidia的显卡,需要使用nvidia-docker命令创建容器
环境说明: 服务器端为Ubuntu18.04离线,nvidia-smi正常使用,CUDA版本11.4

Step1:按需下载基础docker镜像(建议按需制作自己的ubuntu18.04的镜像tar包)

参考信息:

尽管Pytorch官方和Nvidia-NCG提供了很多版本的Pytorch镜像,但是我们平时的科研和工作中经常需要在特定系统版本、特定CUDA版本、特定Python版本下使用特定版本的Pytorch,官方的镜像很难满足自定义的需求,因此需要自己构建Pytorch镜像
# 建议使用dockerfile

如有现成匹配CUDA的tar包(如:10.2-cudnn7-devel-ubuntu18.04-v2.tar)可直接下一步

Step2:服务器断网情况下,安装nvidia-docker

下载参考:

https://blog.csdn.net/WenZhaoYang123/article/details/128371533
https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/
http://mirror.cs.uchicago.edu/nvidia-docker/libnvidia-container/stable/ubuntu16.04/amd64/

建议安装docker20.10.7,18版本装完nvidia-docker2后无法使用

安装参考:

sudo dpkg -i containerd.io_1.4.6-1_amd64.deb
sudo dpkg -i docker-ce-cli_20.10.7~3-0~ubuntu-xenial_amd64.deb
sudo dpkg -i docker-ce_20.10.7~3-0~ubuntu-xenial_amd64.deb

#装完以上3个文件,可以查看docker -v

sudo dpkg -i nvidia-container-toolkit-base_1.11.0-1_amd64.deb
sudo dpkg -i libnvidia-container1_1.11.0-1_amd64.deb
sudo dpkg -i libnvidia-container-tools_1.11.0-1_amd64.deb
sudo dpkg -i nvidia-container-toolkit_1.11.0-1_amd64.deb

sudo dpkg -i nvidia-docker2_2.8.0-1_all.deb
# 重启docker服务
sudo systemctl daemon-reload 
sudo systemctl restart docker

# 装完以上所有文件,使用nvidia-docker命名不报错即可
Step3: nvidia-docker加载镜像及创建容器

举例:

# 载入镜像:
# 方式1:从镜像归档文件ubuntu_v2.tar创建镜像,命名为nvidia/cuda:10.2-cudnn7-ubuntu18.04-v3
docker import 10.2-cudnn7-devel-ubuntu18.04-v2.tar nvidia/cuda:10.2-cudnn7-ubuntu18.04-v3

# 方式2:直接载入,不可修改
sudo docker load < 10.2-cudnn7-devel-ubuntu18.04-v2.tar.tar

# 查看
docker images -a
# 基于镜像,创建容器(可以指定共享内存大小,指定使用GPU数量)
sudo nvidia-docker run -itd --name new_1 --gpus all \
							--privileged=true \ 
							-v /home:/root/new_1 \		# 挂载不要直接挂在/root下,会覆盖容器内的root目录
                           	-p 9001:80 -p 9002:22 -p 9003:5900 \
                            nvidia/cuda:10.2-cudnn7-ubuntu18.04-v3
# 注意:-p指定的前2个分别是网页端和终端进入的端口号
网页:172.16.0.123:9001
终端:ssh -p 9002  root@172.16.0.123
Step*:踩坑记录 及 建议

(1)nvidia-docker创建镜像后,看到docker ps -a 的容器STATUS栏显示(healthy:starting),表示启动中,

过一会看,显示(unhealthy),说明创建容器遇到问题,可以查看docker log 容器id, 看能否找出问题;

Solution:
直接docker stop 该容器,再docker restart 容器id,重复2,3次大概可以显示(healthy),此时可以使用ssh连接进入;(unhealthy状态仅能通过docker exec -it 进入)

(2)创建容器时,-p建议创建2个端口号,若仅用1个-p,可能只能从网页端进入;

(3)创建容器的共享内存配置项 如 --shm-size 16G, 建议根据宿主机实际情况配置,创建容器多次失败建议去除该项试试;

(4)linux进入容器中,可能出现安装了conda命令但无法使用的情况,建议直接进入如/root/minconda/bin/conda --version
Solution:linux系统进入该容器可能需要将该路径加入环境变量,目前win系统进入容器直接是base环境

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nvidia-docker是一个可以在docker中使用GPU的工具。它通过在docker上做了一层封装,并调用nvidia-docker-plugin来实现在docker中使用GPU的功能。在安装nvidia-docker之前,需要先安装docker。安装nvidia-docker的步骤如下: 1. 安装docker:使用以下命令安装docker: ``` sudo apt-get install docker ``` 2. 安装NVIDIA驱动:访问NVIDIA驱动官网,下载并安装适合你的显卡的驱动。安装完成后,可以使用以下命令检查是否安装成功: ``` nvidia-smi ``` 3. 安装nvidia-docker:使用以下命令安装nvidia-docker: ``` 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-docker2 sudo systemctl restart docker ``` 4. 重启docker:使用以下命令重启docker: ``` sudo systemctl restart docker ``` 安装完成后,你就可以使用nvidia-docker来在docker中使用GPU了。 #### 引用[.reference_title] - *1* *3* [安装使用NVIDIA-Docker——可使用GPUDocker容器](https://blog.csdn.net/m0_67390379/article/details/124477868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [深度学习docker环境配置之nvidia-docker安装使用](https://blog.csdn.net/qq_41776453/article/details/129794608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值