Docker | 使用docker配置深度学习pytorch环境

简介: Docker | 使用docker配置深度学习pytorch环境

简要介绍:

Docker 包括三个基本概念:

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

具体请自行查看其他资料,下面开始进入正题。


1. Pytorch环境的配置


由于我使用的是学校的服务器,之前一直用的conda环境来使用服务器的gpu,使用一般登入服务器会直接登录一个用户,但是这里每个用户只是用文件夹区分,本身不是一个linux的子系统,使用如果需要使用docker,这时候一定要进入root,也就是切换到root用户才可以使用docker(这样就不需要sudo的指令了)

以下的记录将从零开始配置一个torch的环境:


  • 切换到root用户

su root

  • 安装docker

yum install docker

  • 启动docker服务

service docker start

  • 查看docker版本

docker version

  • 为了加速下载,配置下载源

vi /etc/docker/daemon.json

  • 在/etc/docker/daemon.json文件中添加以下内容

{

“registry-mirrors”: [“https://registry.docker-cn.com”],

“live-restore”: true

}

  • 下载镜像

docker pull library/hello-docker

image.png

  • 查看当前镜像

docker images

image.png

  • 运行image文件

docker run hello-world

image.png

  • 查看当前的容器

docker ps -a

image.png

  • 现在直接删除镜像是不行的,需要删除容器,再删除镜像

docker rm 2f9001bc1e8c # 其中2f9001bc1e8c是容器名

docker rmi feb5d9fea6a5 # 其中feb5d9fea6a5是镜像名

image.png

  • 现在下载一个pytorch的镜像(在docker.hub中寻找)

docker pull pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel

image.png

显示以上画面表示下载成功

  • 在镜像中创建一个容器

docker run -it pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash

image.png

可以看见,现在进入了容器的一个workspace目录里面了;@后面的0d10ba3b0aaf就是启动的容器id

  • 重命名容器

docker rename old_name new_name

这里我改为testtorch

  • 拷贝文件到容器中

docker cp MLP 95909784d85b:/workspace/

image.png

  • 进入容器中

docker exec -u 0 -it testtorch /bin/bash

image.png

查看路径文件,确实可以看见之前拷贝过来的MLP文件,pip install必要的包之后,就可以在容器里面跑代码了.

image.png

  • vim出现问题:bash:vim:command not found

但是,一般想通过vim编辑器来查看里面的代码,但是这时出现了也问题

ERROR: Could not find a version that satisfies the requirement vim

ERROR: No matching distribution found for vim site:blog.csdn.net

或者是

E: Unable to locate package vim

以上的问题,可以通过下面的方法来解决

pkg update       # 更新源
# apt update     # 更新源的另一种方式
apt install vim  # 安装


之后就可以正常代开编辑了:

image.png

但是我发现此时是没有使用gpu的,torch.cuda.is_available()显示为False

image.png

如何退出当前容器?在宿主机敲以下命令即可

docker stop testtorch

此时容器端就会主动退出,如下所示:

image.png

可以看见,我尝试过在容器内输入docker exit是没有用的,在宿主机中输入docker stop testtorch后,容器就会退出到宿主机界面中,可以看见:root@95909784d85b:/workspace/MLP# -> [root@localhost LLC]# 的改变。

  • 这里重现创建一个gpu环境,命名为torch_gpu的容器

docker run -it --name torch_gpu --gpus all pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash

同时在宿主机中再拷贝项目到容器内

# 以下两个命令均可
docker cp MLP 365febc3316d:/workspace  
docker cp MLP torch_gpu:/workspace


现在可以看见,没有workspace里面没有文件,现在有了MLP这个项目

image.png

在这个容器内,可以跑gpu了

image.png

pip安装需要的包之后,就可以跑代码了,如下所示:

image.png

所以最后,这里创建了两个pytorch的深度学习环境,如下所示:

image.png


2. Docker命令行总结


常用的命令行总结如下:

# 安装docker
yum install docker
# 开启docker服务:
service docker start
# 列出所有docker镜像的命令:
docker images
# 删除指定docker镜像的命令:
docker rmi anibali/pytorch
# 下载一个新的镜像的命令:
docker pull anibali/pytorch:1.7.0-cuda11.0
# 运行新镜像,创建一个cpu运行的容器
# -i: 交互式操作。
# -t: 终端。
# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
docker run -it --name torch_cpu anibali/pytorch:1.7.0-cuda11.0 /bin/bash
# 运行新镜像,创建一个gpu运行的容器
docker run -it --name torch_gpu --gpus all anibali/pytorch:1.7.0-cuda11.0 /bin/bash
# 查看所有的容器命令如下:
docker ps -a
# 查看当前正在运行的容器命令如下:
docker ps -l
# 启动已被停止的容器
docker start CONTAINER_ID/CONTAINER_NAME
# 停止运行中的容器
docker stop CONTAINER_ID/CONTAINER_NAME
# 重启容器
docker restart CONTAINER_ID/CONTAINER_NAME
# 删除容器(-f是指强制执行)
docker rm -f CONTAINER_ID/CONTAINER_NAME
docker rm CONTAINER_ID/CONTAINER_NAME
# 进入容器
docker exec -it CONTAINER_ID/CONTAINER_NAME /bin/bash
# 重命名容器
# docker rename <Old_Name> <New_Name>
docker rename testtorch torch_gpu
# 拷贝本地文件到容器
# docker cp 本地路径 容器ID:容器路径
# docker cp <Local_File> <CONTAINER_ID/CONTAINER_NAME>:/workspace/
docker cp MLP 95909784d85b:/workspace/
# 查看容器端口的映射情况
docker port CONTAINER_ID/CONTAINER_NAME
# 指定宿主机与容器端口的映射(通过参数-p指定端口映射)
docker run -it -d --name CONTAINER_NAME -p 8088:80 IMAGE_NAME
# 保存容器为镜像
docker commit -a <Auther_Name> <CONTAINER_ID/CONTAINER_NAME> <Version_Number>


参考资料:

pytorch: 使用docker

Nvidia-Docker配置python3与pytorch环境

Docker 简单的命令行总结

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
打赏
0
0
1
0
21
分享
相关文章
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
深入理解Docker:为你的爬虫项目提供隔离环境
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
在大规模深度学习模型训练中,GPU内存容量常成为瓶颈,特别是在训练大型语言模型和视觉Transformer时。本文系统介绍了多种内存优化策略,包括混合精度训练、低精度训练(如BF16)、梯度检查点、梯度累积、张量分片与分布式训练、
58 14
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
docker pull 相关配置
通过本文的介绍,您已经了解了如何通过镜像源配置、登录私有仓库、设置网络代理以及其他优化策略来提升 `docker pull`命令的效率和可靠性。这些配置不仅能够显著加快镜像下载速度,还能确保在不同网络环境下的稳定性。通过合理使用这些配置,您可以更好地管理和优化Docker环境中的镜像拉取操作。
38 17
Docker Desktop 4.38 安装与配置全流程指南(Windows平台)
Docker Desktop 是容器化应用开发与部署的一体化工具,支持本地创建、管理和运行 Docker 容器。4.38 版本新增 GPU 加速、WSL 2 性能优化和 Kubernetes 1.28 集群管理功能,适用于微服务开发和 CI/CD 流水线搭建。安装要求为 Windows 10 2004 及以上(64 位),需启用 Hyper-V 或 WSL 2。硬件最低配置为 4GB 内存、20GB 存储和虚拟化技术支持的 CPU。安装步骤包括启用系统功能、下载并运行安装程序,完成后配置镜像加速并验证功能。常见问题涵盖 WSL 2 安装不完整、磁盘空间清理及容器外网访问等。
1041 13
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
以上内容是一个简单的实现在Java后端中通过DockerClient操作Docker生成python环境并执行代码,最后销毁的案例全过程,也是实现一个简单的在线编程后端API的完整流程,你可以在此基础上添加额外的辅助功能,比如上传文件、编辑文件、查阅文件、自定义安装等功能。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
在线编程实现!如何在Java后端通过DockerClient操作Docker生成python环境
在阿里云ECS云服务器上安装、配置及高效使用Docker与Docker Compose
本文介绍了在阿里云ECS上使用Ubuntu系统安装和配置Docker及Docker Compose的详细步骤。通过这些工具,可以快速部署、弹性扩展和高效管理容器化应用,满足开发和运维需求。内容涵盖Docker的安装、镜像源配置、创建Web程序镜像以及使用Docker Compose部署WordPress等实际操作,并分享了使用体验,展示了阿里云实例的高性能和稳定性。
212 4
Docker中配置TLS加密的步骤
我们可以在 Docker 中成功配置 TLS 加密,增强 Docker 环境的安全性,保护容器之间以及与外界的通信安全。需要注意的是,在实际应用中,应根据具体情况进行更细致的配置和调整,确保符合安全要求。同时,定期更新证书和私钥,以保障安全性。
280 60
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等