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 简单的命令行总结

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
目录
相关文章
|
10月前
|
Kubernetes 关系型数据库 文件存储
手把手教你完成极空间 NAS Docker 镜像加速配置
本教程详细介绍了如何在极空间NAS上配置轩辕镜像加速器,以提升Docker镜像的下载速度与稳定性。内容涵盖账号注册、网络确认、加速器设置及验证方法,并提供常见问题解决方案,帮助用户高效完成容器化应用部署。
4172 1
|
7月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
373 5
|
10月前
|
文件存储 数据安全/隐私保护 开发者
群晖NAS Docker镜像源加速配置教程
本教程介绍了群晖NAS用户如何通过配置轩辕镜像加速服务提升Docker镜像拉取速度。内容包括配置前准备、详细设置步骤及日常使用说明,帮助用户快速完成配置并享受高效稳定的镜像下载体验。
6216 60
|
Docker 容器 文件存储
飞牛fnOS Docker镜像加速配置全攻略
本文介绍了如何在飞牛fnOS中配置Docker镜像加速服务,通过设置轩辕镜像仓库加速器,提升镜像拉取速度与稳定性。内容涵盖配置前准备、加速源设置、首选加速源调整及使用指南,帮助用户高效完成镜像操作。
7662 56
|
9月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
589 16
|
10月前
|
Java 分布式数据库 Docker
使用Docker配置并连接HBase的Java API
本流程概要的解释了如何在Docker上配置并启动HBase服务,并通过Java API进行连接和操作表,不涉及具体的业务逻辑处理和数据模型设计,这些因应用而异需由开发者根据实际需求进行实现。
481 13
|
10月前
|
弹性计算 关系型数据库 Nacos
低配阿里云 ECS 如何 docker 环境部署 NACOS : 单机版模式
NACOS 单机版 Docker 安装指南。使用指定端口和 custom.env 配置文件启动 Nacos 服务,适用于 2.X 版本,包含 gRPC 支持及 MySQL 数据源配置。 -e MODE=standalone \
810 5
|
10月前
|
存储 缓存 Serverless
【Azure Container App】如何在Consumption类型的容器应用环境中缓存Docker镜像
在 Azure 容器应用的 Consumption 模式下,容器每次启动均需重新拉取镜像,导致冷启动延迟。本文分析该机制,并提出优化方案:使用 ACR 区域复制加速镜像拉取、优化镜像体积、设置最小副本数减少冷启动频率,或切换至 Dedicated 模式实现镜像缓存,以提升容器启动效率和应用响应速度。
472 0

热门文章

最新文章