硬件
顯卡
顯卡驅動 英偉達 cuda-drivers
1.軟件綜述:
1.installed the NVIDIA driver and Docker engine for your Linux distribution Note
01. NVIDIA driver install the cuda-drivers
02. Docker engine
2 ###cuda
nvcc --version nvcc是CUDA的編譯器,可以從CUDA Toolkit的/bin目錄中獲取,類似於gcc就是c語言的編譯器
nvidia-smi 是NVIDIA System Management Interfac
3.nvidia-docker 是英偉達公司專門為docker方便使用GPU設備,而開發的一種插件
nvidia-container-toolkit 還是 nvidia-docker2
Docker 19.03的發布,不贊成使用nvidia-docker2軟件包,因為Docker運行時中現在已將NVIDIA GPU作為設備本地支持
nvidia將提供原生的顯卡支持,只需要安裝 nvidia-container-toolkit工具包不再像使用nvidia-docker/2那樣復雜配置,而且不支持用docker-compose
在docker19以前都需要單獨下載nvidia-docker1或nvidia-docker2來啟動容器,docker19后跑需要gpu的docker只需要加個參數–gpus all 即可
2.安裝docker
版本 >=19.03
1.安裝
方式一: 在線安裝
sudo apt-get update
# 查看版本
apt-cache madison docker-ce
# 安裝特定版本 sudo apt-get install docker-ce=5:18.09.1~3-0~ubuntu-xenial docker-ce-cli=5:18.09.1~3-0~ubuntu-xenial containerd.io
sudo apt-get install docker-ce docker-ce-cli containerd.io
方式二:離線docker
步驟1:下載deb包
https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/
步驟2:安裝
sudo dpkg -i containerd.io_1.2.2-3_amd64.deb
sudo dpkg -i docker-ce-cli_19.03.9_3-0_ubuntu-xenial_amd64.deb
sudo dpkg -i docker-ce_19.03.9_3-0_ubuntu-xenial_amd64.deb
2.確認是否安裝成功
docker --version
docker version
3.包說明:
docker依賴清楚的情況下
containerd.io - daemon to interface with the OS API (in this case, LXC - Linux Containers),
essentially decouples Docker from the OS, also provides container services for non-Docker container managers
docker-ce - Docker daemon, this is the part that does all the management work, requires the other two on Linu
docker-ce-cli - CLI tools to control the daemon, you can install them on their own if you want to control a remote Docker daemon
參考: https://docs.docker.com/engine/install/ubuntu/
docker-ce-rootless-extras 以非root賬戶運行docker daemon
Docker Buildx 是 Docker的CLI插件,buildx構建多架構鏡像-不同cpu的架構 來自於Moby BuildKit https://github.com/moby/buildkit 多平台鏡像構建環境
docker-compose 分為插件版本(docker-compose-plugin)和獨立版本(docker-compose-plugin)
docker scan 掃描鏡像中的漏洞 Docker Scan 在 Snyk 引擎上運行,為用戶提供對其本地 Dockerfile 和本地映像的安全狀況的可見性。
安裝 nvidia-docker
說明 : 在docker19以前都需要單獨下載nvidia-docker1或nvidia-docker2來啟動容器, 自從升級了docker19后跑需要gpu的docker只需要加個參數–gpus all 即可 一下是針對19以下版本而言
離線安裝版本
注意 nvidia-container-toolkit需要主機已安裝當前新版的docker 19.03
下載方法:
參考 https://github.com/NVIDIA/nvidia-docker ,
在一台可以上網的機器上,配置apt源,用來下載deb包
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
root@ubuntu:~/nvidia-docker-package# . /etc/os-release;echo $ID$VERSION_ID
ubuntu16.04
##1.更新源
#Ubuntu 16.04/18.04, Debian Jessie/Stretch
# Add the package repositories
$ 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
#2.下載包
$ apt download libnvidia-container1
$ apt download libnvidia-container-tools
$ apt download nvidia-container-toolkit
###3.分析依賴-確定安裝順序
apt show nvidia-container-toolkit
apt show libnvidia-container-tools
apt show libnvidia-container1
###4.安裝-把下載的包放到要安裝的服務器中,安裝安裝
sudo dpkg -i libnvidia-container1_1.4.0-1_amd64.deb
sudo dpkg -i libnvidia-container-tools_1.4.0-1_amd64.deb
sudo dpkg -i nvidia-container-toolkit_1.5.0-1_amd64.deb
###5 重啟docker
sudo systemctl restart docker
###6.創建容器 un表示create+start,是創建新容器 鏡像 + 標簽
sudo docker run --rm --gpus all -v /home/test:/home/test -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
備注說明:
方法一: 安裝nvidia-container-toolkit,后添加—gpus參數來使用
使用nvidia-container-toolkit的最大優點:linux主機不需要安裝 CUDA toolkit,僅安裝顯卡驅動 cuda-drivers 即可
sudo docker run --gpus all -v /home/test:/home/test -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
方法二: nvidia-docker2 and nvidia-container-runtime
安裝nvidia-container-runtime,在首次運行時添加—runtime=nvidia參數,后續啟動、結束都不需要再加
sudo apt-get install nvidia-container-runtime
sudo docker run --gpus all-v /home/test:/home/test -v /data:/data --name "test_act" --shm-size="8g" -it ufoym/deepo:latest bash
nvidia-docker2
###各個包具體情況
libnvidia-container 提供一個庫和一個簡單的CLI程序,
使用這個庫可以使NVIDIA GPU使用 Linux 容器。
https://github.com/NVIDIA/libnvidia-container
nvidia-container-runtime
它在原有的runc容器運行時的基礎上增加一個 prestart hook用於調用 libnvidia-container 庫
https://github.com/NVIDIA/nvidia-container-runtime
nvidia-docker2.0 是一個簡單的包,它主要通過修改docker的配置文件
來讓docker使用 NVIDIA Container runtime
https://github.com/NVIDIA/nvidia-docker
###nvidia-docker 離線的資源獲取
相同linux的有網的下載3個包到當前目錄,拷貝這些包到沒有網的服務器上。
apt download libnvidia-container-tools
apt download nvidia-container-runtime
apt download nvidia-docker2
scp
sudo dpkg -i
sudo systemctl daemon-reload
sudo systemctl restart docker
###查看依賴包順序
檢查軟件包依賴關系
apt-cache depends nvidia-docker2
apt-cache rdepends nvidia-docker
apt-cache depends nvidia-docker2
nvidia-docker2
依賴: nvidia-container-runtime
|依賴: docker-ce
|依賴: <docker-ee>
依賴: docker.io
破壞: <nvidia-docker>
替換: <nvidia-docker>
apt-cache depends nvidia-container-runtime
nvidia-container-runtime
依賴: nvidia-container-toolkit
依賴: nvidia-container-toolkit
依賴: libseccomp2
apt-cache depends nvidia-container-toolkit
apt-cache depends libseccomp2
apt-cache rdepends nvidia-container-runtime
apt-cache rdepends nvidia-container-runtime-hook
程序位置
/usr/bin/nvidia-container-runtime
配置位置
/etc/docker/daemon.json
配置內容
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"insecure-registries":["12.10.12.12:1212"]
}
####通過apt命令已安裝軟件
apt list --installed |grep docker
###進入和一些操作
sudo docker run --runtime=nvidia -v /data:/data --name="gpu_form" --shm-size="8g" -it gpu:latest
sudo nvidia-docker start "ai_platform"
sudo nvidia-docker exec -it "ai_platform" /bin/bash
登錄docker 私有服務器
#01.登錄
docker login 100.100.100.100:8000 # 賬號密碼 會提示寫入
解決辦法: docker的守護進程參數配置一般在文件 /etc/docker/daemon.json
在/etc/docker/daemon.json配置中加入非安全倉庫,允許用http協議拉取,寫法很簡單
{ "insecure-registries":["100.100.100.100:8000"] }
然后
sudo systemctl daemon-reload #守護進程重啟
sudo service docker restart #重啟docker服務
# 下載鏡像
使用工具: docker
使用命令: docker pull 100.100.100.100:8000/cnn/cnn_update:latest
02.加載鏡像
cd /home/test/registry/
sudo docker load < cnn_update.tar
03. 查看鏡像是否加載成功
sudo docker images
#100.100.100.100:8000/cnn/cnn_update latest 000000f3514b 1 hours ago 0.5GB
04.根據鏡像創建docker 容器
sudo docker run --gpus all -v /home/test:/home/test -v /data:/data --name "test_act" --shm-size="8g" -it 100.100.100.100:8000/cnn/cnn_update:latest bash
初次創建環境后,會直接進入容器
05.命令 stop rm --it,進入了命令交互界面
sudo docker start "test_train"
sudo docker exec -it "test_train" /bin/bash
說明
01. 主機有GPU硬件--GPU驅動
02. cuda
03. 主機安裝docker 有nvidia-docker
應用:創建container 需要有 --gpus 參數
sudo docker run --runtime=nvidia --gpus all -v /home/premodel:/home/premodel_bigdata -v /data:/data --name="ai_mine" --shm-size="8g" -it ai_dev:latest
離線的情況下,可以將下載好的backbone 放在 ~/.cache/torch/hub/checkpoints/ 中即可
/root/.cache/torch/hub/checkpoints/vgg16-397923af.pth
cp /home/premodel/vgg16-397923af.pth /root/.cache/torch/hub/checkpoints/
參考
https://docs.docker.com/engine/install/ubuntu/