Ubuntu16.04+nvidia docker


一、安裝過程:

https://blog.csdn.net/heiheiya/article/details/102834222

1、先卸載干凈以前的nvidia-docker

sudo docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge nvidia-docker

2、添加軟件包存儲庫

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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

3、查看可安裝版本

apt-cache madison nvidia-docker2 nvidia-container-runtime

 

 4、安裝nvidia-docker2【找到合適的版本安裝,不一定按照下面的版本】

sudo apt-get install -y nvidia-docker2=2.0.3+docker18.09.7-3 nvidia-container-runtime=2.0.0+docker18.09.7-3

5、測試成功 [下載合適的鏡像環境,比如python3.6環境,比如nvidia cuda9的鏡像]

docker run --runtime nvidia nvidia/cuda:9.0-base nvidia-smi

 6、安裝tensorflow-gpu(不推薦直接下載tensorflow鏡像,可以先自己在docker啟動后安裝cuda\jupyter notebook\tensorflow自己需要的版本)

nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu

以上命令,如果沒有安裝tensorflow-gpu則會主動安裝並啟動。

查看所有正在啟動的容器:docker ps -a

 

 進入容器:docker exec -it 2be581570c90 bash

 

 

 

二、卸載docker過程

https://blog.csdn.net/weixin_41282397/article/details/86524297

方法一:

sudo apt-get remove docker  
sudo apt-get remove --auto-remove docker

方法二:
sudo apt remove docker-ce
方法三:
# 查詢相關軟件包
dpkg -l | grep docker
# 刪除這個包
sudo apt remove --purge docker***【這個是還有什么跟docker相關的,都刪掉】

 

三、遇到的錯誤

1、錯誤1

詳細操作:https://www.cnblogs.com/Lee-yl/p/12108255.html

ERROR:gzip: stdout: No space left on deviceE: mkinitramfs failure cpio 1

在sudo apt-get install時報錯,

采用df -h命令查看時,發現/boot目錄下空間不夠,故要將未使用的Ubuntu內核版本刪除。

采用dpkg --get-selections|grep linux命令查看安裝了哪些Ubuntu內核版本刪除

采用uname -a查看當前使用的Ubuntu內核版本。

刪除無用的內核版本:采用sudo apt-get purge刪除,如輸入命令:sudo apt-get purge linux-modules-4.15.0-45-generic【注意,Ubuntu16.04內核版本不要太高,后面容易出問題】

 

2、錯誤2

sudo apt-get install *****
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹       
正在讀取狀態信息... 完成       
E: 無法定位軟件包 *****

原因:

方法一:【可能不能成功】

sudo apt-get update

更新一些軟件源。

方法二:【換源】

  1. 在 etc/apt 下的sources.list
  2. 添加鏡像源:*************
  3. $ sudo apt- get update

3、錯誤3:

下列軟件包有未滿足的依賴關系:
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹
正在讀取狀態信息... 完成
有一些軟件包無法被安裝。如果您用的是 unstable 發行版,這也許是
因為系統無法達到您要求的狀態造成的。該版本中可能會有一些您需要的軟件
包尚未被創建或是它們已被從新到(Incoming)目錄移出。
下列信息可能會對解決問題有所幫助:

下列軟件包有未滿足的依賴關系:
nvidia-docker2 : 依賴: docker-ce (= 18.03.1~ce~3-0~ubuntu) 但是它將不會被安裝
或docker-ee (= 18.03.1~ee~3-0~ubuntu) 但無法安裝它
E: 無法修正錯誤,因為您要求某些軟件包保持現狀,就是它們破壞了軟件包間的依賴關系。

原因:docker和nvidia-docker2以及Ubuntu系統版本不對應的原因,卸載所有docker,重新安裝正確的版本。

方法:

查看對應的版本命令:

apt-cache madison nvidia-docker2 nvidia-container-runtime

 

 

 找到合適的版本安裝:安裝命令【使用的Ubuntu16.04內核版本是4.15.0-72-generic,但后面降級了,但好像有沒有降成功】

sudo apt-get install -y nvidia-docker2=2.0.3+docker18.06.3-3 nvidia-container-runtime=2.0.0+docker18.06.3-3

4、錯誤4:

執行docker run命令時報錯

Error response from daemon: oci runtime error: container_linux.go:346: starting container process caused "process_linux.go:

還是docker和Ubuntu內核版本問題,卸載docker重裝。升級內核或者降級docker。

升級內核:https://blog.csdn.net/u013431916/article/details/82530523

sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak【備份一下源文件(因為待會要替換掉,以免以后找不到)】

sudo vim /etc/apt/sources.list【修改文件】

在里面最后一行加入deb http://security.ubuntu.com/ubuntu trusty-security main,並保存(:wq)

sudo apt-get update【更新】

sudo apt-get install linux-image-extra-3.16.0-43-generic【找到想安裝的內核版本,安裝新內核】

dpkg -l | grep 3.16.0-43-generic【查看是否安裝成功】

sudo vim /etc/default/grub【編輯grub配置文件,指定新安裝的內核版本為當前使用的版本】

找到

GRUB_DEFAULT=0

修改為:

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.16.0-43-generic"

sudo update-grub【保存退出,然后執行以下命令更新 Grub 引導】

sudo reboot【更新完成后重啟系統】

uname -r【查看一下是否更換成功】

5、錯誤5:

執行命令sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi報錯:

docker: Error response from daemon: Unknown runtime specified nvidia.

原因:沒有將docker啟動

方法:

sudo systemctl daemon-reload
sudo systemctl restart docker

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM