文章目录

  • 操作提醒
  • 实验环境
  • 本文前言
  • 安装`Docker`
  • 操作`Docker`
  • 给`Docker`容器提供硬件和软件支持
    • 在容器内配置`ssh`使得可以通过`ssh`命令访问容器
    • 给`pytorch`容器提供`GPU`硬件支持
      • 在宿主机上安装`nvidia driver`
      • 在宿主机上安装`nvidia container toolkit`
      • 注意事项

操作提醒

  1. 在linux系统中进行操作,最重要的就是意识到用户权限,这在通过不同方式安装不同应用中非常重要,不然你就会导致一些用户无法使用。
  2. 除了用户权限的问题还有就是程序的安装位置,不同的安装位置的程序的启动方式是不同的,安装在/usr/local/bin目录下的程序,如果启动文件是在这个目录下,在任意位置都可以直接启动,如果启动文件是在子目录下,需要链接一下才能在任意位置启动。在其他位置则需要连接一下才能在任意位置使用。
  3. 如果一些应用是希望开机自启动的,类似于下面的alist,就需要编辑守护进程,这样系统在启动的时候会自动调用守护进程。

建议在尝试Linux之前首先参考一下相关文献:

  • Ubuntu:Install Ubuntu desktop
  • Linux 101:软件安装与文件操作
  • 码农教程:Linux操作系统查看系统信息

实验环境

参考:

  • PHP中文网:linux如何查看版本信息
  • 阿里云:ubuntu查看硬件信息

查看系统信息的指令:

cat /proc/version
uname -a
sudo lshw
gnome-shell --version
项目 内容
系统 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
操作系统类型 64位
磁盘 128GB

本文前言

在进行科研工作时,很多时候都需要对代码进行复现。复现很简单,问题的难点在于环境的配置,环境配置好了,实验自然就能够复现,环境配置错误,往往会不停报错。因此为了省去配置环境的麻烦,我们选择把环境连同系统一起打包,即采用docker,实现快速可迁移的代码复现。

安装Docker

在电脑上安装Docker,切记安装的是Docker engine!!!Docker desktop-小孩子的玩具,狗都不用(里面功能有缺陷,无法挂载GPU,还要配合engine使用才行,官网说desktop包含engine,狗屁!害我装了好几遍desktop配置)!!!,安装Docker engine参见官网教程。
安装好以后docker帮助命令如下所示。

docker -h
Flag shorthand -h has been deprecated, please use --helpUsage:  docker [OPTIONS] COMMANDA self-sufficient runtime for containersCommon Commands:run         Create and run a new container from an imageexec        Execute a command in a running containerps          List containersbuild       Build an image from a Dockerfilepull        Download an image from a registrypush        Upload an image to a registryimages      List imageslogin       Log in to a registrylogout      Log out from a registrysearch      Search Docker Hub for imagesversion     Show the Docker version informationinfo        Display system-wide informationManagement Commands:builder     Manage buildsbuildx*     Docker Buildx (Docker Inc., v0.11.0)compose*    Docker Compose (Docker Inc., v2.19.1)container   Manage containerscontext     Manage contextsdev*        Docker Dev Environments (Docker Inc., v0.1.0)extension*  Manages Docker extensions (Docker Inc., v0.2.20)image       Manage imagesinit*       Creates Docker-related starter files for your project (Docker Inc., v0.1.0-beta.6)manifest    Manage Docker image manifests and manifest listsnetwork     Manage networksplugin      Manage pluginssbom*       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 Dockertrust       Manage trust on Docker imagesvolume      Manage volumesSwarm Commands:swarm       Manage SwarmCommands:attach      Attach local standard input, output, and error streams to a running containercommit      Create a new image from a container's changescp          Copy files/folders between a container and the local filesystemcreate      Create a new containerdiff        Inspect changes to files or directories on a container's filesystemevents      Get real time events from the serverexport      Export a container's filesystem as a tar archivehistory     Show the history of an imageimport      Import the contents from a tarball to create a filesystem imageinspect     Return low-level information on Docker objectskill        Kill one or more running containersload        Load an image from a tar archive or STDINlogs        Fetch the logs of a containerpause       Pause all processes within one or more containersport        List port mappings or a specific mapping for the containerrename      Rename a containerrestart     Restart one or more containersrm          Remove one or more containersrmi         Remove one or more imagessave        Save one or more images to a tar archive (streamed to STDOUT by default)start       Start one or more stopped containersstats       Display a live stream of container(s) resource usage statisticsstop        Stop one or more running containerstag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGEtop         Display the running processes of a containerunpause     Unpause all processes within one or more containersupdate      Update configuration of one or more containerswait        Block until one or more containers stop, then print their exit codesGlobal Options:--config string      Location of client config files (default"/home/stu/.docker")-c, --context string     Name of the context to use to connect to thedaemon (overrides DOCKER_HOST env var anddefault 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 quitRun '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 镜像创建时间
SIZE 镜像大小
#查看容器列表
docker ps -a
名字 属性
CONTAINER ID: 容器 ID。
IMAGE 使用的镜像。
COMMAND 启动容器时运行的命令。
CREATED 容器的创建时间。
STATUS 容器状态。
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容器。关于软件支持或者网络支持的本文不讨论,我也没弄明白。

在容器内配置ssh使得可以通过ssh命令访问容器

要想让启动的容器可以通过ssh连接进行访问,就需要在容器中安装ssh服务。当我们需要在云服务器中安装docker容器又想要在外部可以直接访问这个容器而不是先登录服务器然后再打开docker容器,我们可以把docker容器的ssh端口映射到服务器的某个端口上,这样我们可以通过ssh直接访问内部的docker容器。
参考:

  • 知乎:OpenSSH安装与使用-Linux
  • 腾讯云开发者社区:ubuntu系统启用root用户远程登陆
  • SegmentFault:VsCode轻松使用docker容器-Remote Containers
  • 菜鸟教程:容器互联

在容器内安装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中比较容易实现,选择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:深度学习服务器环境配置总结
  • 知乎:给Linux服务器配置深度学习环境
  • 腾讯云:cuda卸载与安装
  • CSDN:实现Linux服务器配置深度学习环境并跑代码完整步骤
  • 稀土掘金:ubuntu如何查看硬件信息
  • CSDN:linux(ubuntu)查看硬件设备命令

上述最后一个参考还是有可取之处的,==深度学习服务器比较好的管理方式是采用分配账户的方式来提高服务器的利用率。其中cuda最好是通过全局的方式安装到机器上的,也就是所有用户都可以访问,nvidia驱动和cudnn是直接安装在全局上的,这个没什么疑问。Anaconda和pytorch/tensorflow是需要每个用户自行安装的,每个用户根据自己不同的需要安装不同的包。==这就是传统的强化学习环境的配置方式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
#检查系统版本
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 驱动程序

通过程序管理器安装
首先是最简单的通过系统桌面上的additional driver应用程序来安装驱动。对于Ubuntu系统来说,如果你的计算机有NVIDIA GPU,那么系统会自动安装开源驱动程序 Nouveau 和 NVIDIA专有驱动程序,你可以自己选择,通过桌面上的附加驱动(一块电路板图标)来更改使用的驱动。
默认情况下,Ubuntu 使用的 Nouveau 驱动程序通常比专有驱动程序慢得多,并且不支持最新的硬件和软件技术。所以通过additional driver可以更改GPU使用的驱动程序。
这种方法安装的驱动程序跟通过命令行安装的具有同样效力。通过命令行安装驱动如下所示:

#检查有什么驱动及对应的驱动程序
ubuntu-drivers devices
#安装想使用的版本的驱动
sudo apt install nvidia-driver-版本号
#当然这样安装的是ubuntu软件源默认提供的驱动程序,如果想使用最新的驱动程序,可以从NVIDIA官网上导入PPA来安装。
#重启使生效
sudo reboot
#检查安装情况
nvidia-smi

通过联网在线安装

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后还有一些设置需要完成,包括设置环境变量等,参考:

  • NVIDIA:Post-installation Actions

有一些安装方法是会自动配置环境的。在使用deb包安装nvidia driver时,deb包里面包含了配置环境变量的脚本,所以会自动进行环境变量配置;在使用桌面的程序管理器来切换驱动的时候也支持自动配置环境变量。其他的方法我就不知道了,没试过。
除了上面的常见方法安装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的状态、温度、功率、显存使用情况
gpustat
----------------------------------------------------------------------------------------
#设置NVIDIA Container Toolkit for docker为root权限级别,
##根据官方文档中的意思就是:
##先安装好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,现在(2023.10.07)再看就没了这个要求,估计是开发人员发现了这个智障问题:前面我们说了,要安装容器驱动,就需要先安装nvidia container toolkit,但是要安装nvidia container toolkit又需要先安装驱动,这不闭环了嘛。我安装驱动,你让我先安装toolkit,我安装toolkit,你说先安装驱动,锁死了。好在现在再来看这个安装就没了这个要求。要求如下所示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具体的安装过程也非常简单,针对不同的系统有不同的方式,Ubuntu系统使用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

通过上面的命令我们就实现了安装Nvidia container toolkit,并将它配置给了docker应用,使得docker容器通过上面的运行命令可以访问宿主机上的GPU

注意事项

1.下面报错是因为我之前一直安装的是docker desktop,不知道犯什么神经,没有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以后执行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

# 查看系统内版本
#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社区开发的Pytorch镜像包,而是bitnami下面的。要是能用我就不说什么了,关键还不好用。按下载量排名也轮不上bitnami啊。
真正的pytorch镜像应该是:

参考:

  • CSDN:docker容器部署pytorch模型,gpu加速部署运行
  • CSDN:史上最详细解决“搭建GPU版Pytorch Docker镜像”教程
  • Docker hub:镜像

狗官方,要是搜索直接显示社区版本的,我也就不用走这么多弯路了,真狗!!!

使用Docker配置深度学习的运行环境相关推荐

  1. 如何使用docker配置深度学习开发环境

    文章目录 1.底层驱动的安装 1.1 操作系统的安装 1.2 显卡驱动的安装 1.3 cuda的安装 2.使用docker配置深度学习开发环境 2.1 docker的安装 2.2 nvidia_doc ...

  2. docker配置深度学习环境

    版权声明:本文为博主原创文章,转载注明出处即可. https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81017226 序 阅读本篇文章可以帮 ...

  3. 2.树莓派4B 64位操作系统 从零搭建深度学习项目运行环境

    树莓派的环境配置 文章目录 树莓派的环境配置 1.系统烧录 1.1 系统选择 1.1.1 Raspbian OS:官方的树莓派操作系统 1.1.2 Ubuntu MATE:适合通用计算需求 1.1.3 ...

  4. 【IROS 2021: BundleTrack】docker 配置6D位姿识别运行环境

    一.BundleTrack 简介 BundleTrack不依赖于实例或类别级别的 3D 模型(不需要cad模型)对新物体进行 6D 姿势跟踪的通用框架.可以在各种具有挑战性的场景下进行长期.低漂移的跟 ...

  5. 服务器上搭建深度学习模型运行环境:ubuntu

    1.购买服务器 我买了腾讯云轻量级服务器,默认系统为CentOS 7.6,我重装成ubuntu18. 2. 搭建ubuntu可视化界面(没必要) 参考链接:搭建 Ubuntu 可视化界面 我在配置 V ...

  6. docker anaconda_深度学习炼丹炉配置[1] Docker+sshfs环境配置

    感谢 @田文善 同学供稿 目录 一.需求二.方案(一)docker 配置1.dockerfile 制作2.构建 docker 镜像3.运行 docker 容器4.使用 docker 容器5.环境复用( ...

  7. Ubuntu 20.04 LTS/RTX30XX显卡 快速配置深度学习环境(一行命令)

    近日,新入一台RTX3080的服务器,目前好像还没办法很方便地在 RTX 30 系列 GPU上通过 pip/conda 安装 TensorFlow 或 PyTorch.因为这些 GPU 需要 CUDA ...

  8. docker制作深度学习镜像(以windows环境下为例)

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx 用 Docker 安装深度学习环境,轻量.方便!整个系统大小仅需2~3G,用完还能带着走!一 ...

  9. 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

    深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...

  10. Docker 部署深度学习 运行deeplabV3

    文章目录 前言 一.Docker简介 二.帮助命令 三.镜像常用命令 四.容器常用命令 五.配置深度学习环境 六.运行deeplabV3代码 七.提交容器,保存镜像 总结 前言 本文主要介绍docke ...

最新文章

  1. 硬盘显示容量和实际容量不符合_为啥我买的64G U盘实际只有57G?聊聊存储市场的“不足量”现象...
  2. 计算机控制里ddc什么缩略语,空调自动化术语和缩略语.doc
  3. 互联网寒冬前端社招面试
  4. 服务器显示禁止设置多个ip地址,服务器禁止设置多个ip解决办法
  5. mysql loadfile_在MySQL中如何使用LOAD_FILE()函数?(代码示例)
  6. Android7.0 发生的android.os.FileUriExposedException错误
  7. flutter自定义View(CustomPainter) 之 canvas的方法总结
  8. android之字体阴影效果
  9. cm agent主机异常Error, CM server guid updated, expected
  10. 2009-2021网络规划设计师论文题汇总
  11. 忆亚强建筑预算软件的2001年半年时光
  12. 利用Oracle RDA( Remote Diagnostic Agent)快速收集Oracle产品分析数据
  13. [易飞]同一单据如何根据不同用户或组限定仓库(客户)
  14. 网络 - VXLAN
  15. VUE调用WEB3.0实现代币查询,批量转账功能
  16. 解决华硕飞行堡垒性能切换问题
  17. java boxed_Java IntStream boxed()用法及代码示例
  18. 电子组装流水线MES系统实行条码质量追溯
  19. DDPM(Denoising Diffusion Probabilistic Models)扩散模型简述
  20. CompareNoCase

热门文章

  1. Python实例004:输入某年某月某日,判断日期的正确合理性以及输出该天是该年的第几天
  2. 怎么快速释放close_wait_装修后到底怎么除甲醛?不要再被这些乱七八糟的产品骗啦。...
  3. 连载| 为什么要走老路找一个数据分析师?(三)
  4. 台积电稳坐全球晶圆代工第一!
  5. cento7安装docker
  6. Rancher单机搭建
  7. 升压boost电路之最小续流电感值的计算
  8. MATLAB 极点图
  9. docker -- docker基础命令
  10. 猪行天下之Python基础——10.2 Python常用模块(下)