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盲盒。
目录
相关文章
|
3月前
|
PyTorch Linux 算法框架/工具
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
这篇文章是关于如何使用Anaconda进行Python环境管理,包括下载、安装、配置环境变量、创建多版本Python环境、安装PyTorch以及使用Jupyter Notebook的详细指南。
440 1
pytorch学习一:Anaconda下载、安装、配置环境变量。anaconda创建多版本python环境。安装 pytorch。
|
29天前
|
开发工具 Docker 容器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
|
1月前
|
Docker 容器
|
1月前
|
Docker 容器
Docker 镜像加速器配置指南
dockerhub加速器失败,使用第三方加速器
|
1月前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
65 5
|
1月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
105 3
|
2月前
|
存储 安全 数据安全/隐私保护
Docker中配置TLS加密的步骤
我们可以在 Docker 中成功配置 TLS 加密,增强 Docker 环境的安全性,保护容器之间以及与外界的通信安全。需要注意的是,在实际应用中,应根据具体情况进行更细致的配置和调整,确保符合安全要求。同时,定期更新证书和私钥,以保障安全性。
116 1
|
2月前
|
机器学习/深度学习 监控 PyTorch
深度学习工程实践:PyTorch Lightning与Ignite框架的技术特性对比分析
在深度学习框架的选择上,PyTorch Lightning和Ignite代表了两种不同的技术路线。本文将从技术实现的角度,深入分析这两个框架在实际应用中的差异,为开发者提供客观的技术参考。
61 7
|
3月前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
533 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
2月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
481 1

热门文章

最新文章