国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用Docker配置深度學習的運行環(huán)境

這篇具有很好參考價值的文章主要介紹了使用Docker配置深度學習的運行環(huán)境。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

操作提醒

  1. 在linux系統(tǒng)中進行操作,最重要的就是意識到用戶權限,這在通過不同方式安裝不同應用中非常重要,不然你就會導致一些用戶無法使用。
  2. 除了用戶權限的問題還有就是程序的安裝位置,不同的安裝位置的程序的啟動方式是不同的,安裝在/usr/local/bin目錄下的程序,如果啟動文件是在這個目錄下,在任意位置都可以直接啟動,如果啟動文件是在子目錄下,需要鏈接一下才能在任意位置啟動。在其他位置則需要連接一下才能在任意位置使用。
  3. 如果一些應用是希望開機自啟動的,類似于下面的alist,就需要編輯守護進程,這樣系統(tǒng)在啟動的時候會自動調用守護進程。

建議在嘗試Linux之前首先參考一下相關文獻:

  • Ubuntu:Install Ubuntu desktop
  • Linux 101:軟件安裝與文件操作
  • 碼農教程:Linux操作系統(tǒng)查看系統(tǒng)信息

實驗環(huán)境

參考:

  • PHP中文網(wǎng):linux如何查看版本信息
  • 阿里云:ubuntu查看硬件信息

查看系統(tǒng)信息的指令:

cat /proc/version
uname -a
sudo lshw
gnome-shell --version
項目 內容
系統(tǒng) Ubuntu 22.04(jammy)
內存 12GiB
處理器 Intel? Core? i5-6300HQ CPU @ 2.30GHz × 4
圖形 Intel? HD Graphics 530 & GM107M [GeForce GTX 960M]
GNOME GNOME Shell 42.9
操作系統(tǒng)類型 64位
磁盤 128GB

本文前言

在進行科研工作時,很多時候都需要對代碼進行復現(xiàn)。復現(xiàn)很簡單,問題的難點在于環(huán)境的配置,環(huán)境配置好了,實驗自然就能夠復現(xiàn),環(huán)境配置錯誤,往往會不停報錯。因此為了省去配置環(huán)境的麻煩,我們選擇把環(huán)境連同系統(tǒng)一起打包,即采用docker,實現(xiàn)快速可遷移的代碼復現(xiàn)。

安裝Docker

在電腦上安裝Docker,切記安裝的是Docker engine?。。?code>Docker desktop-小孩子的玩具,狗都不用(里面功能有缺陷,無法掛載GPU,還要配合engine使用才行,官網(wǎng)說desktop包含engine,狗屁!害我裝了好幾遍desktop配置)!?。?,安裝Docker engine參見官網(wǎng)教程。
docker配置深度學習環(huán)境,docker,深度學習,容器安裝好以后docker幫助命令如下所示。

docker -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Log in to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.11.0)
  compose*    Docker Compose (Docker Inc., v2.19.1)
  container   Manage containers
  context     Manage contexts
  dev*        Docker Dev Environments (Docker Inc., v0.1.0)
  extension*  Manages Docker extensions (Docker Inc., v0.2.20)
  image       Manage images
  init*       Creates Docker-related starter files for your project (Docker Inc., v0.1.0-beta.6)
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  sbom*       View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
  scan*       Docker Scan (Docker Inc., v0.26.0)
  scout*      Command line tool for Docker Scout (Docker Inc., 0.16.1)
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Swarm Commands:
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default
                           "/home/stu/.docker")
  -c, --context string     Name of the context to use to connect to the
                           daemon (overrides DOCKER_HOST env var and
                           default context set with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info",
                           "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default
                           "/home/stu/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default
                           "/home/stu/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default
                           "/home/stu/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Run 'docker COMMAND --help' for more information on a command.

For more help on how to use Docker, head to https://docs.docker.com/go/guides/

操作Docker

參考:

  • 菜鳥教程:Docker教程
#查看本地鏡像列表
docker images 
名字 屬性
REPOSITORY 表示鏡像的倉庫源
TAG 鏡像的標簽
IMAGE ID 鏡像ID
CREATED 鏡像創(chuàng)建時間
SIZE 鏡像大小
#查看容器列表
docker ps -a
名字 屬性
CONTAINER ID: 容器 ID。
IMAGE 使用的鏡像。
COMMAND 啟動容器時運行的命令。
CREATED 容器的創(chuàng)建時間。
STATUS 容器狀態(tài)。
PORTS 容器的端口信息和使用的連接類型(tcp\udp)。
NAMES 自動分配的容器名稱。

常見操作指令如下所示:

#拉取鏡像
docker pull image_name:version
#以交互式運行容器并初始命令為/bin/bash
docker run -it image_name:version /bin/bash
#退出終端
exit
#啟動容器
docker start container_id
#進入容器
docker exec container_id
#停止容器
docker stop container_id
#重啟容器
docker restart container_id
#導出容器
docker export container_id > ubuntu.tar
#導入容器
docker import ubuntu.tar test/ubuntu:v1
#刪除容器
docker rm -f container_id
#把容器制作為鏡像
docker commit -a "author_email" -m "message" container_id image_name:version
#推薦把他整為你docker hub上鏡像的形式也就是:image_name=your_repository,version=name_you_set
#把鏡像上傳到docker hub服務器中
docker push image_id
#或者
docker push image_name:version
#以root身份運行容器并進入bash命令行交互操作
docker exec -it --user root container_id /bin/bash

給Docker容器提供硬件和軟件支持

一些Docker容器是即下載即使用的,但是有一些可能需要宿主機的硬件或者軟件支持,這些需要不同的套件或者不同的配置。在本文中,我們只討論了需要宿主機的GPU硬件支持的容器的使用與配置,主要是pytorch容器。關于軟件支持或者網(wǎng)絡支持的本文不討論,我也沒弄明白。

在容器內配置ssh使得可以通過ssh命令訪問容器

要想讓啟動的容器可以通過ssh連接進行訪問,就需要在容器中安裝ssh服務。當我們需要在云服務器中安裝docker容器又想要在外部可以直接訪問這個容器而不是先登錄服務器然后再打開docker容器,我們可以把docker容器的ssh端口映射到服務器的某個端口上,這樣我們可以通過ssh直接訪問內部的docker容器。
參考:

  • 知乎:OpenSSH安裝與使用-Linux
  • 騰訊云開發(fā)者社區(qū):ubuntu系統(tǒng)啟用root用戶遠程登陸
  • SegmentFault:VsCode輕松使用docker容器-Remote Containers
  • 菜鳥教程:容器互聯(lián)

在容器內安裝ssh的命令如下所示:

#在容器內安裝ssh方便通過ssh訪問容器
apt install ssh
#在容器內添加用戶密碼方便通過ssh登陸時訪問
passwd root
123
#容器內修改配置文件,允許用戶通過密碼登陸root用戶
/etc/ssh/sshd_config
PermitRootLogin yes
#重新啟動容器內的ssh
/etc/init.d/ssh start         %啟動ssh
/etc/init.d/ssh stop          %關閉ssh
/etc/init.d/ssh restart       %重啟ssh
#容器內設置端口映射,將容器端口22映射到宿主機的某個端口
#這個操作在vscode中比較容易實現(xiàn),選擇terminal旁邊的forward port即可
#其它主機通過ssh連接容器
ssh -p port user@ip
123
#當配置好上述設置以后每次登陸還需要輸入密碼為了省略上述操作我們可以生成ssh-key,然后把公鑰上傳到遠程服務器的
##/home/hph/.ssh/authorized_keys中

不過這個一般也不怎么用得上,你整個vscode他不香嗎?vscode安裝一些插件即可。Docker (Makes it easy to create, manage, and debug container)、Remote-ssh (Open any folder on a remote machine using SSH)、Dev containers(Open any folder or repository inside a Docker container)。這樣在啟動容器以后就可以通過右鍵容器選擇attach visual studio code來連接容器

給pytorch容器提供GPU硬件支持

參考:

  • CSDN:深度學習服務器環(huán)境配置總結
  • 知乎:給Linux服務器配置深度學習環(huán)境
  • 騰訊云:cuda卸載與安裝
  • CSDN:實現(xiàn)Linux服務器配置深度學習環(huán)境并跑代碼完整步驟
  • 稀土掘金:ubuntu如何查看硬件信息
  • CSDN:linux(ubuntu)查看硬件設備命令

上述最后一個參考還是有可取之處的,==深度學習服務器比較好的管理方式是采用分配賬戶的方式來提高服務器的利用率。其中cuda最好是通過全局的方式安裝到機器上的,也就是所有用戶都可以訪問,nvidia驅動和cudnn是直接安裝在全局上的,這個沒什么疑問。Anaconda和pytorch/tensorflow是需要每個用戶自行安裝的,每個用戶根據(jù)自己不同的需要安裝不同的包。==這就是傳統(tǒng)的強化學習環(huán)境的配置方式conda

深度學習的研究很多都是用pytorch,所以pytorch容器的使用很重要。Pytorch的使用離不開GPU顯卡的加持。在容器中,我們可以通過命令行輸入nvidia-smi的形式來檢查我們的容器可不可以訪問宿主機上的GPU。如果你宿主機上正常安裝了nvidia driver,并且你通過nvidia container toolkitGPU顯卡掛載到了容器,那么你的容器中是會返回相關信息的。如果上面兩個步驟沒有完成,是會報錯的。下面我們完成這兩個步驟。

在宿主機上安裝nvidia driver

有多種方法可以在宿主機中安裝nvidia driver,如果你的服務器有桌面,那么最簡單的方式就是打開程序管理器選擇合適的驅動就行。如果沒有,要么下載安裝包,要么使用apt包管理器來安裝。在使用上述方法安裝顯卡驅動時,有一些前提要求。
參考:

  • NVIDIA:Pre-installation Actions
  • 騰訊云:linux查看內核版本_ubuntu查看內核版本號
  • 博客園:ubuntu—查看、安裝、切換內核
  • CSDN:ubuntu16查看\下載\切換內核

主要檢查的就是有沒有顯卡,gcc是否安裝,以及內核版本和內核頭部是否匹配。如果不匹配要安裝相應的內核頭部。因為有了匹配的內核頭部,安裝應用程序的時候才能正常通過校驗。驗證指令如下所示:

#查看GPU是否可以用nvidia的驅動及cuda
lspci | grep -i nvidia
#檢查系統(tǒng)版本
uname -m && cat /etc/*release
#檢查gcc是否安裝了
gcc --version
#查看內核版本
lsb_release -a
uname -a
hostnamectl
cat /proc/version
cat /etc/issue
lsb_release -a
#查看內核頭文件的版本
dpkg --get-selections | grep linux 或者 dpkg --list |grep linux
#linux-image-版本號:內核映像文件
#linux-headers-版本號:內核頭文件
#linux-image-extra-版本號:內核擴展文件
#最后一步比較復雜,就是要檢查內核頭文件版本和內核版本是否對應。如果不對應,需要進行修改,

當內核版本跟內核頭部文件不匹配時,需要安裝相應的內核版本。并修改配置文件使得按照要求的內核運行。

#安裝內核版本
sudo apt install linux-image-版本號-generic
#查看配置文件中的內核啟動順序
grep menuentry /boot/grub/grub.cfg
#修改配置文件設置內核啟動順序
sudo gedit /etc/default/grub
#把GRUB_DEFAULT=0修改為 GRUB_DEFAULT=”Ubuntu,Linux 4.4.0-21-generic“ 這種類型的, 當然內核版本應該是你想要的.
#修改完成后更新使生效
sudo update-grub
#再修改配置文件
sudo gedit /boot/grub/grub.cfg
#大概在148行有個........,把版本號改為你需要的版本號,修改好以后保存退出.
#然后重啟電腦
#檢驗是否安裝成功
uname -r

當上述要求滿足以后就可以按照常見方法中給定的安裝步驟進行安裝驅動程序。
安裝顯卡driver的方法參考:

  • NVIDIA:NVIDIA Driver Installation Quickstart Guide
  • myfreax:如何在 Ubuntu 20.04 安裝 Nvidia 驅動程序

通過程序管理器安裝
首先是最簡單的通過系統(tǒng)桌面上的additional driver應用程序來安裝驅動。對于Ubuntu系統(tǒng)來說,如果你的計算機有NVIDIA GPU,那么系統(tǒng)會自動安裝開源驅動程序 Nouveau 和 NVIDIA專有驅動程序,你可以自己選擇,通過桌面上的附加驅動(一塊電路板圖標)來更改使用的驅動。
默認情況下,Ubuntu 使用的 Nouveau 驅動程序通常比專有驅動程序慢得多,并且不支持最新的硬件和軟件技術。所以通過additional driver可以更改GPU使用的驅動程序。
這種方法安裝的驅動程序跟通過命令行安裝的具有同樣效力。通過命令行安裝驅動如下所示:

#檢查有什么驅動及對應的驅動程序
ubuntu-drivers devices
#安裝想使用的版本的驅動
sudo apt install nvidia-driver-版本號
#當然這樣安裝的是ubuntu軟件源默認提供的驅動程序,如果想使用最新的驅動程序,可以從NVIDIA官網(wǎng)上導入PPA來安裝。
#重啟使生效
sudo reboot
#檢查安裝情況
nvidia-smi

通過聯(lián)網(wǎng)在線安裝

BASE_URL=https://us.download.nvidia.com/tesla
DRIVER_VERSION=450.80.02
curl -fSsl -O $BASE_URL/$DRIVER_VERSION/NVIDIA-Linux-x86_64-$DRIVER_VERSION.run
sudo sh NVIDIA-Linux-x86_64-$DRIVER_VERSION.run

通過下載deb包安裝

sudo apt-get install linux-headers-$(uname -r)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID | sed -e 's/\.//g')
wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda-drivers
#下載好deb安裝包后進行安裝
sudo dpkg -i *.deb

在安裝完成nvidia driver后還有一些設置需要完成,包括設置環(huán)境變量等,參考:

  • NVIDIA:Post-installation Actions

有一些安裝方法是會自動配置環(huán)境的。在使用deb包安裝nvidia driver時,deb包里面包含了配置環(huán)境變量的腳本,所以會自動進行環(huán)境變量配置;在使用桌面的程序管理器來切換驅動的時候也支持自動配置環(huán)境變量。其他的方法我就不知道了,沒試過。
除了上面的常見方法安裝nvidia driver以外,還有另一種安裝驅動的方法,就是把他放在容器中,然后安裝在電腦上,我也沒試,但是還是記下來吧。

通過容器安裝驅動
參考:

  • NVIDIA:NVIDIA Driver Containers

安裝容器版本的驅動程序有一定的要求,包括禁用開源驅動程序,GPU架構,container toolkit的設置,內核模塊的開啟等,具體檢查方法如下所示:

#禁用Nouveau,啟用IPMI
#Prompt:ubuntu如何禁用Nouveau?
## 禁用Nouveau
sudo tee /etc/modules-load.d/ipmi.conf <<< "ipmi_msghandler" \
&& sudo tee /etc/modprobe.d/blacklist-nouveau.conf <<< "blacklist nouveau" \
&& sudo tee -a /etc/modprobe.d/blacklist-nouveau.conf <<< "options nouveau modeset=0"
----------------------------------------------------------------------------------------
#查看GPU架構>Fermi(2.1)
## 安裝查看GPU的工具
sudo apt install gpustat
##查看GPU的狀態(tài)、溫度、功率、顯存使用情況
gpustat
----------------------------------------------------------------------------------------
#設置NVIDIA Container Toolkit for docker為root權限級別,
##根據(jù)官方文檔中的意思就是:
##先安裝好container toolkit,然后修改里面的配置,使得當啟動容器時,導入的GPU驅動指向的是驅動容器內的驅動。
##所以container toolkit程序的作用就是設置:當啟動容器并掛載GPU時,對應的GPU驅動程序去哪里找?通過修改container toolkit的配置文件可以修改驅動程序的位置,進而讓掛載GPU時有不同的位置設置。
##所以我用常見方法安裝好驅動以后,要想在容器中使用GPU,也需要下載container toolkit來指定容器去哪里找驅動程序,否則容器無法使用驅動程序。
##設置container toolkit應用程序的權限
sudo sed -i 's/^#root/root/' /etc/nvidia-container-runtime/config.toml
----------------------------------------------------------------------------------------
#啟用i2c_core內核模塊
## 如果是aws核,需要啟用此模塊,其他的版本就不用了
sudo tee /etc/modules-load.d/ipmi.conf <<< "i2c_core"
----------------------------------------------------------------------------------------
# 更新使得配置生效
sudo apt-get dist-upgrade
sudo update-initramfs -u
# 重啟生效
sudo reboot

在滿足上面提到的要求以后,我們可以啟動一個驅動容器,也就是專門用來運行驅動程序的容器,

#啟動此驅動容器
sudo docker run --name nvidia-driver -d --privileged --pid=host \
-v /run/nvidia:/run/nvidia:shared \
-v /var/log:/var/log \
--restart=unless-stopped \
nvidia/driver:450.80.02-ubuntu18.04
----------------------------------------------------------------------------------------
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

#在驅動容器啟動完成后,我們就可以在深度學習容器中掛載GPU了
sudo docker run --gpus all nvidia/cuda:11.0-base nvidia-smi
sudo docker run --gpus all nvidia/cuda:11.8.0-devel-ubuntu22.04 nvidia-smi
sudo apt autoremove
#systemctl --user enable docker-desktop
#service文件位置
#/etc/systemd/system/multi-user.target.wants/docker.service

從官方說明書中知道,安裝驅動容器之前要先安裝好NVIDIA-Container-Toolkit,在我這個教程中,安裝nvidia container toolkit是第二步,所以我們不細說這種容器安裝驅動的方式,如果要嘗試這種安裝方式的話,需要倒著看,先看怎么安裝nvidia container toolkit,再回過頭來看配置安裝驅動。

在宿主機上安裝nvidia container toolkit

安裝這個應用程序也有前提要求,我之前(2023.09.03)看的時候說要先安裝NVIDIA驅動程序,再來安裝這個toolkit,現(xiàn)在(2023.10.07)再看就沒了這個要求,估計是開發(fā)人員發(fā)現(xiàn)了這個智障問題:前面我們說了,要安裝容器驅動,就需要先安裝nvidia container toolkit,但是要安裝nvidia container toolkit又需要先安裝驅動,這不閉環(huán)了嘛。我安裝驅動,你讓我先安裝toolkit,我安裝toolkit,你說先安裝驅動,鎖死了。好在現(xiàn)在再來看這個安裝就沒了這個要求。要求如下所示NVIDIA:Installation Guide:

#kernel version > 3.10
uname -a
----------------------------------------------------------------------------------------
#Docker >=19.03
docker -v
----------------------------------------------------------------------------------------
#GPU architecture >=Kepler
gpustat
----------------------------------------------------------------------------------------
#NVIDIA driver >=418.81.07
nvidia-smi

當我們的宿主機能夠滿足這些要求以后,我們可以進行安裝并將其配置到其他應用上,使得其他應用能夠借助于這個nvidia container toolkit來訪問GPU。

比如:可以用于Container Device Interface (CDI) Support這個應用Github:CDI - The Container Device Interface,也可以用于Docker這個應用Installing the NVIDIA Container Toolkit。
Docker安裝參考:

  • Docker:Docker install

nvidia container toolkit具體的安裝過程也非常簡單,針對不同的系統(tǒng)有不同的方式,Ubuntu系統(tǒng)使用apt包管理器即可。
參考:

  • NVIDIA:Installation Guide
  • 簡書:在docker容器中使用tensorflow-gpu
  • CSDN:linux中在docker container中使用宿主機的GPU資源
#設置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
#更新及安裝
sudo apt-get update            
sudo apt-get install -y nvidia-container-toolkit
#配置container-toolkit的守護進程
sudo nvidia-ctk runtime configure --runtime=docker
##上面的命令在你正常安裝docker engine和nvidia driver的時候是正??捎玫?!下面注釋掉的是沒用的
#sudo dockerd --add-runtime=nvidia=/usr/bin/nvidia-container-runtime [...]
##或者
#sudo mkdir -p /etc/systemd/system/docker.service.d
#sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
#[Service]
#ExecStart=
#ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
#EOF
#sudo systemctl daemon-reload \
#  && sudo systemctl restart docker
#重啟docker
sudo systemctl restart docker
#如果提示:Failed to restart docker.service: Unit docker.service is masked.
#說明你之前安裝的docker engine或者nvidia driver不正確,建議檢查一下。
#通過運行基本的CUDA容器來驗證工作設置
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi

通過上面的命令我們就實現(xiàn)了安裝Nvidia container toolkit,并將它配置給了docker應用,使得docker容器通過上面的運行命令可以訪問宿主機上的GPU。

注意事項

1.下面報錯是因為我之前一直安裝的是docker desktop,不知道犯什么神經(jīng),沒有docker daemon。需要安裝docker engine才是正確的。
docker配置深度學習環(huán)境,docker,深度學習,容器
上面反復錯誤就是因為我用的是Docker desktop,導致缺少docker.service文件,連systemctl都找不到docker.service在哪里,更開不了守護進程daemon。
如果還有問題可以參考:

  • 簡書:在docker容器中使用tensorflow-gpu
  • CSDN:ubuntu20.04下安裝Docker和NVIDIA Container Toolkit教程
  • 稀土掘金:安裝NVIDIA Container Toolkit
  • stackoverflow:docker-desktop does not launch on ubuntu [Failed to start docker-desktop.service: Unit docker-desktop.service is masked]

2.如果正常安裝docker engine以后執(zhí)行docker相關命令提示permission問題,就是用戶權限問題,說明你當前用戶不是docker組里面的用戶,我們要把用戶添加到docker組里面。命令如下:

sudo gpasswd -a <當前登陸用戶名> docker
### 例如: sudo gpasswd -a xuxiaocong docker
### 從用戶組中刪除: sudo gpasswd -d <當前登陸用戶名> docker
##鏈接上以后,再添加三個拓展,然后再重啟就可以使用docker了
sudo reboot

參考:

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

3.卸載Docker desktop的步驟

# 卸載客戶端
sudo apt purge docker-desktop
# 刪除配置文件
rm -r $HOME/.docker/desktop
sudo rm /usr/local/bin/com.docker.cli
# 刪除無用的軟鏈接
cd /etc/systemd/system/multi-user.target.wants
# 把其中標紅的刪掉

docker配置深度學習環(huán)境,docker,深度學習,容器
docker配置深度學習環(huán)境,docker,深度學習,容器
docker配置深度學習環(huán)境,docker,深度學習,容器
4.啟動pytorch容器并掛在GPU

# 查看系統(tǒng)內版本
#uname -a不行
cat /etc/issue
# 拉取python鏡像
docker pull python:3.11@sha256:7d57b1fef9b7fda8bf331b971a3ca96c3214313666fafdf26d33f1d0e6399222
# 運行python容器
docker run -it --runtime=nvidia --gpus all --name python3-test python:3.11@sha256:7d57b1fef9b7fda8bf331b971a3ca96c3214313666fafdf26d33f1d0e6399222
# 拉取ubuntu鏡像
docker pull ubuntu:jammy-20230624@sha256:b060fffe8e1561c9c3e6dea6db487b900100fc26830b9ea2ec966c151ab4c020
# 運行ubuntu容器
docker run -it --runtime=nvidia --gpus all --name ubuntu-test ubuntu:jammy-20230624@sha256:b060fffe8e1561c9c3e6dea6db487b900100fc26830b9ea2ec966c151ab4c020
#拉取Pytorch鏡像
docker pull bitnami/pytorch:2.0.1
# 啟動pytorch容器
docker run -it --runtime=nvidia --gpus all --name pytorch-test bitnami/pytorch:2.0.1
# 拉取18.0鏡像
docker pull ubuntu:bionic-20230530@sha256:dca176c9663a7ba4c1f0e710986f5a25e672842963d95b960191e2d9f7185ebe
# 拉取正版pytorch鏡像
docker pull pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel
# 運行正版pytorch鏡像
docker run -itd --gpus all --name myenv pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel

Docker官方收了多少廣告費,搜索Pytorch竟然第一個不是Pytorch社區(qū)開發(fā)的Pytorch鏡像包,而是bitnami下面的。要是能用我就不說什么了,關鍵還不好用。按下載量排名也輪不上bitnami啊。
docker配置深度學習環(huán)境,docker,深度學習,容器真正的pytorch鏡像應該是:
docker配置深度學習環(huán)境,docker,深度學習,容器
參考:

  • CSDN:docker容器部署pytorch模型,gpu加速部署運行
  • CSDN:史上最詳細解決“搭建GPU版Pytorch Docker鏡像”教程
  • Docker hub:鏡像

狗官方,要是搜索直接顯示社區(qū)版本的,我也就不用走這么多彎路了,真狗?。。?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-756928.html

到了這里,關于使用Docker配置深度學習的運行環(huán)境的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • K8S部署后的使用:dashboard啟動、使用+docker鏡像拉取、容器部署(ubuntu環(huán)境+gpu3080+3主機+部署深度學習模型)

    K8S部署后的使用:dashboard啟動、使用+docker鏡像拉取、容器部署(ubuntu環(huán)境+gpu3080+3主機+部署深度學習模型)

    0、k8s安裝、docker安裝 參考:前兩步Ubuntu云原生環(huán)境安裝,docker+k8s+kubeedge(親測好用)_愛吃關東煮的博客-CSDN博客_ubantu部署kubeedge ?配置節(jié)點gpu: K8S調用GPU資源配置指南_思影影思的博客-CSDN博客_k8s 使用gpu 1、重置和清除舊工程:每個節(jié)點主機都要運行 2、部署新的k8s項目:

    2023年04月20日
    瀏覽(29)
  • 如何在Docker中配置Mosquitto MQTT代理,以便在容器化環(huán)境中運行和管理MQTT通信

    如何在Docker中配置Mosquitto MQTT代理,以便在容器化環(huán)境中運行和管理MQTT通信

    MQTT(Message Queuing Telemetry Transport)是一種輕量級的消息傳輸協(xié)議,廣泛用于物聯(lián)網(wǎng)和傳感器網(wǎng)絡中。Mosquitto是一個流行的開源MQTT代理,可以在Docker中進行配置和部署。本文將詳細介紹如何在Docker中配置Mosquitto MQTT代理,以便在容器化環(huán)境中運行和管理MQTT通信。 在開始之前,

    2024年02月06日
    瀏覽(24)
  • Docker環(huán)境 運行Kafka容器失敗

    Docker環(huán)境 運行Kafka容器失敗

    網(wǎng)上docker 安裝kafka環(huán)境教程大多數(shù)會采用下面命令 –name=“容器新名字” 為容器指定一個名稱; -d: 后臺運行容器并返回容器ID,也即啟動守護式容器(后臺運行); -p: 指定端口映射,小寫p 啟動kafka容器時發(fā)現(xiàn)容器并沒有正常啟動,通過查看日志發(fā)現(xiàn)提示: 查看日志命令 日志

    2024年02月11日
    瀏覽(24)
  • Ubuntu基礎配置+Docker配置和使用+容器化centos7大數(shù)據(jù)環(huán)境準備

    Ubuntu基礎配置+Docker配置和使用+容器化centos7大數(shù)據(jù)環(huán)境準備

    環(huán)境:ubuntu 18.04 大數(shù)據(jù)技術與應用賽項平臺環(huán)境 安裝完Ubuntu之后,除了需要新建用戶、設置密碼之外,我們還要設置root密碼,雖然Ubuntu默認有root超級管理員賬戶,但是具體的密碼我們可以自行設置 1.1設置root密碼: 1.啟動Ubuntu 啟動Ubuntu,有圖形界面的,啟動終端即可 2.終端

    2024年01月17日
    瀏覽(50)
  • 基于docker的ubuntu云服務器jupyter深度學習環(huán)境配置指南

    基于docker的ubuntu云服務器jupyter深度學習環(huán)境配置指南

    安裝docker 文檔中的命令如下: 如果回顯如下所示,則說明成功: 安裝Nvidia-docker 根據(jù)官方文檔中的命令跑就行了 如果出現(xiàn)了以下回顯,說明安裝成功 需要注意的是,在運行最后一步命令時: sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi 如果報錯

    2024年02月13日
    瀏覽(17)
  • 在服務器的docker容器中安裝Anaconda配置環(huán)境以及使用編程工具遠程連接環(huán)境

    在服務器的docker容器中安裝Anaconda配置環(huán)境以及使用編程工具遠程連接環(huán)境

    一、連接服務器下載Anaconda 3 使用win+r輸入cmd打開命令行,在命令行中輸入ssh -p xxxxx(你的端口號如10101,下圖紅色部分)? root@xxx.xxx.xxx.xxx(服務器ip地址下圖藍色部分) ? 第一次連接時,連接沒問題會出現(xiàn)Are you sure you want to continue connecting (yes/no/[fingerprint])?之后就不會出現(xiàn)了。 輸

    2024年02月03日
    瀏覽(27)
  • 使用Docker容器部署java運行環(huán)境(java8 + mysql5.7 + redis5.0 + nginx1.14.1

    使用Docker容器部署java運行環(huán)境(java8 + mysql5.7 + redis5.0 + nginx1.14.1

    環(huán)境:阿里云ECS服務器 1.1 安裝工具 1.2 為yum源添加docker倉庫位置 1.3 將軟件包信息提前在本地索引緩存 (非必要,建議執(zhí)行,可以提升yum安裝的速度,報錯去掉fast試試) 1.4 安裝Docker 傻瓜式安裝 點擊y 1.5 啟動Docker 1.6 設置開機自啟動 1.7 安裝完成后可以測試一下,是否安裝成功

    2024年02月02日
    瀏覽(32)
  • Docker環(huán)境下將已運行的容器打包成新的鏡像并運行在另一個服務器上的Docker容器中

    Docker環(huán)境下將已運行的容器打包成新的鏡像并運行在另一個服務器上的Docker容器中

    1.1、使用root賬戶登錄進入Linux系統(tǒng)中,鍵入 docker ps 命令。 2.1、正在運行的容器一行中CONTAINER ID一列下面的字符串就是容器id,復制想要打包的容器ID并執(zhí)行 docker commit 容器id 容器新名稱 例如: docker commit e973c1d6731e mysql/newmysql 3.1、在根目錄下鍵入 docker save -o 新鏡像名稱.tar 新

    2024年02月16日
    瀏覽(29)
  • Docker學習路線9:運行容器

    要啟動一個新的容器,我們使用 docker run 命令,后跟鏡像名稱。基本語法如下: 例如,要運行官方的 Nginx 鏡像,我們可以使用: 這會啟動一個新的容器,并將主機的端口 8080 映射到容器的端口 80。 要列出所有正在運行的容器,請使用 docker ps 命令。要查看所有容器(包括已

    2024年02月16日
    瀏覽(20)
  • 輕松上手Docker:學習如何創(chuàng)建和運行自己的Docker容器

    輕松上手Docker:學習如何創(chuàng)建和運行自己的Docker容器

    容器化技術,它是一種虛擬化技術,用于在計算機系統(tǒng)中隔離和運行應用程序。容器將應用程序及其所有依賴項打包到一個獨立的、可移植的環(huán)境中,使其能夠在不同的計算機或操作系統(tǒng)上運行。 容器的特點 :隔離性、輕量級、可移植性、彈性伸縮、生態(tài)系統(tǒng)。 目前最流行

    2024年02月04日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包