使用Docker配置深度学习的运行环境

这篇具有很好参考价值的文章主要介绍了使用Docker配置深度学习的运行环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

操作提醒

  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,深度学习,容器安装好以后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 镜像创建时间
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配置深度学习环境,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以后执行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配置深度学习环境,docker,深度学习,容器
docker配置深度学习环境,docker,深度学习,容器
docker配置深度学习环境,docker,深度学习,容器
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啊。
docker配置深度学习环境,docker,深度学习,容器真正的pytorch镜像应该是:
docker配置深度学习环境,docker,深度学习,容器
参考:

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

狗官方,要是搜索直接显示社区版本的,我也就不用走这么多弯路了,真狗!!!文章来源地址https://www.toymoban.com/news/detail-756928.html

到了这里,关于使用Docker配置深度学习的运行环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S部署后的使用:dashboard启动、使用+docker镜像拉取、容器部署(ubuntu环境+gpu3080+3主机+部署深度学习模型)

    0、k8s安装、docker安装 参考:前两步Ubuntu云原生环境安装,docker+k8s+kubeedge(亲测好用)_爱吃关东煮的博客-CSDN博客_ubantu部署kubeedge  配置节点gpu: K8S调用GPU资源配置指南_思影影思的博客-CSDN博客_k8s 使用gpu 1、重置和清除旧工程:每个节点主机都要运行 2、部署新的k8s项目:

    2023年04月20日
    浏览(48)
  • 如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,广泛用于物联网和传感器网络中。Mosquitto是一个流行的开源MQTT代理,可以在Docker中进行配置和部署。本文将详细介绍如何在Docker中配置Mosquitto MQTT代理,以便在容器化环境中运行和管理MQTT通信。 在开始之前,

    2024年02月06日
    浏览(38)
  • Docker环境 运行Kafka容器失败

    网上docker 安装kafka环境教程大多数会采用下面命令 –name=“容器新名字” 为容器指定一个名称; -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行); -p: 指定端口映射,小写p 启动kafka容器时发现容器并没有正常启动,通过查看日志发现提示: 查看日志命令 日志

    2024年02月11日
    浏览(39)
  • Ubuntu基础配置+Docker配置和使用+容器化centos7大数据环境准备

    环境:ubuntu 18.04 大数据技术与应用赛项平台环境 安装完Ubuntu之后,除了需要新建用户、设置密码之外,我们还要设置root密码,虽然Ubuntu默认有root超级管理员账户,但是具体的密码我们可以自行设置 1.1设置root密码: 1.启动Ubuntu 启动Ubuntu,有图形界面的,启动终端即可 2.终端

    2024年01月17日
    浏览(42)
  • 基于docker的ubuntu云服务器jupyter深度学习环境配置指南

    安装docker 文档中的命令如下: 如果回显如下所示,则说明成功: 安装Nvidia-docker 根据官方文档中的命令跑就行了 如果出现了以下回显,说明安装成功 需要注意的是,在运行最后一步命令时: sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi 如果报错

    2024年02月13日
    浏览(77)
  • 在服务器的docker容器中安装Anaconda配置环境以及使用编程工具远程连接环境

    一、连接服务器下载Anaconda 3 使用win+r输入cmd打开命令行,在命令行中输入ssh -p xxxxx(你的端口号如10101,下图红色部分)  root@xxx.xxx.xxx.xxx(服务器ip地址下图蓝色部分)   第一次连接时,连接没问题会出现Are you sure you want to continue connecting (yes/no/[fingerprint])?之后就不会出现了。 输

    2024年02月03日
    浏览(37)
  • 使用Docker容器部署java运行环境(java8 + mysql5.7 + redis5.0 + nginx1.14.1

    环境:阿里云ECS服务器 1.1 安装工具 1.2 为yum源添加docker仓库位置 1.3 将软件包信息提前在本地索引缓存 (非必要,建议执行,可以提升yum安装的速度,报错去掉fast试试) 1.4 安装Docker 傻瓜式安装 点击y 1.5 启动Docker 1.6 设置开机自启动 1.7 安装完成后可以测试一下,是否安装成功

    2024年02月02日
    浏览(65)
  • Docker环境下将已运行的容器打包成新的镜像并运行在另一个服务器上的Docker容器中

    1.1、使用root账户登录进入Linux系统中,键入 docker ps 命令。 2.1、正在运行的容器一行中CONTAINER ID一列下面的字符串就是容器id,复制想要打包的容器ID并执行 docker commit 容器id 容器新名称 例如: docker commit e973c1d6731e mysql/newmysql 3.1、在根目录下键入 docker save -o 新镜像名称.tar 新

    2024年02月16日
    浏览(37)
  • Docker学习路线9:运行容器

    要启动一个新的容器,我们使用 docker run 命令,后跟镜像名称。基本语法如下: 例如,要运行官方的 Nginx 镜像,我们可以使用: 这会启动一个新的容器,并将主机的端口 8080 映射到容器的端口 80。 要列出所有正在运行的容器,请使用 docker ps 命令。要查看所有容器(包括已

    2024年02月16日
    浏览(30)
  • 轻松上手Docker:学习如何创建和运行自己的Docker容器

    容器化技术,它是一种虚拟化技术,用于在计算机系统中隔离和运行应用程序。容器将应用程序及其所有依赖项打包到一个独立的、可移植的环境中,使其能够在不同的计算机或操作系统上运行。 容器的特点 :隔离性、轻量级、可移植性、弹性伸缩、生态系统。 目前最流行

    2024年02月04日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包