離線安裝Docker以及NVIDIA-docker


硬件

顯卡
顯卡驅動 英偉達 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/


免責聲明!

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



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