操作提醒
- 在linux系統(tǒng)中進行操作,最重要的就是意識到用戶權限,這在通過不同方式安裝不同應用中非常重要,不然你就會導致一些用戶無法使用。
- 除了用戶權限的問題還有就是程序的安裝位置,不同的安裝位置的程序的啟動方式是不同的,安裝在
/usr/local/bin
目錄下的程序,如果啟動文件是在這個目錄下,在任意位置都可以直接啟動,如果啟動文件是在子目錄下,需要鏈接一下才能在任意位置啟動。在其他位置則需要連接一下才能在任意位置使用。 - 如果一些應用是希望開機自啟動的,類似于下面的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幫助命令如下所示。
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 toolkit
把GPU
顯卡掛載到了容器,那么你的容器中是會返回相關信息的。如果上面兩個步驟沒有完成,是會報錯的。下面我們完成這兩個步驟。
在宿主機上安裝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 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
# 把其中標紅的刪掉
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啊。真正的pytorch鏡像應該是:
參考:文章來源:http://www.zghlxwxcb.cn/news/detail-756928.html
- 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)!