Docker配置DL envs教程

news2024/10/6 4:01:53

Docker容器与镜像的区别

Docker镜像类似于虚拟镜像,是一个只读的文件,包括进程需要运行所需要的可执行文件、依赖软件、库文件、配置文件等等。
而容器则是基于镜像创建的进程,可以利用容器来运行应用。
总结来说,镜像只读,容器是动态的,我们又可以基于容器创建新的镜像,而docker就是帮助我们实现这些功能的应用引擎。

本教程实现在深度学习环境下安装配置docker

配置一个镜像只需要执行

  1. 从docker hub 上面下载一个基础镜像; 2. 然后在这个基础镜像的基础上安装python代码所需要的package; 3. 更新镜像。

一、安装Docker

直接使用官网脚本自动安装即可

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

测试docker是否安装成功

sudo docker help

二、Docker镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。例如:科大镜像,阿里云等等。

以阿里云为例:阿里云镜像获取地址

然后在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请健该文件)

{“registry-mirrors":["https://XXX.mirror.aliyuncs.com/"]}

之后重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker

三、登录Docker hub

1.首先注册一个账号,然后在本地登录

sudo docker login

登录成功后,我们就可以在docker hub 直接拉去自己账号下的全部镜像

四、从Docker hub上面下载基础镜像

如果需在服务器上跑深度学习算法,需要下载pytorch-cuda 包镜像,执行一下命令:

sudo docker search torch1.9

选择一个合适的镜像下载即可

sudo docker pull lingjunlh/torch1.9.1-cuda11.1

这样我们就把这个镜像下载到了本地,使用如下命令进行查看

sudo docker images

五、根据镜像创建容器

镜像只是一个可读文件,需要创建容器来运行程序,因此根据镜像创建一个容器

sudo docker run -it lingjunlh/torch1.9.1-cuda11.1:v1 /bin/bash
  1. i:交互式操作
  2. t:终端
  3. lingjunlh/torch1.9.1-cuda11.1:v2: 镜像名字: 镜像标签
  4. /bin/bash: 命令操作
    在这里插入图片描述
    这样就进入了容器,该容器的ID为26…, 一个容器就相当于一个进程,是镜像的实例化,利用包含了程序运行的环境和配置环境,例如python, cuda, list。 我们可以在容器中执行命令,例如pip list。

六、在容器内安装所需要的包

通常情况下,为了达到我们自己的目标,还需要在基础镜像的基础上安装新的包,这一过程可以直接在容器内进行,具体操作和在本地命令行操作一样,即直接在容器内通过conda install或者pip install。安装完之后用exit命令退出容器。

七、更新镜像

容器动态,镜像静态。我们在容器中更新了python包,如果以后可以持久化使用,还需要使用commit将容器打包为镜像。

docker commit -m="update packages" -a="XXX" 26.... XXX/pymarl:v1

-m: 提交描述信息
-a: 指定镜像作者
26…: 容器ID
XXX/pymarl:v1:作者名/镜像名:标签

在这里插入图片描述
查看镜像,可以看到我们已经成功的构建了自己的镜像pymarl:v1

在这里插入图片描述

之后我们就可以直接利用该镜像创建容器,在容器里跑代码啦~

八、在本地使用容器运行代码

为了测试镜像能否正常运行我们的代码,可以先在本地用容器测试一下。

首先我们需要创建一个本地Ubuntu系统和docker容器共享的文件夹:

sudo mkdir /data
sudo docker run -v /data :/data-itd  zhouxuanhan/pymarl:v1 bash

在这里插入图片描述
然后将代码cp到/data 下,这样该目录下就和容器中的/data 目录互通,查看此时正在运行的容器。

sudo docker ps

在这里插入图片描述
该容器就是我们刚刚所创建的用于本地测试代码的容器,用docker attach进入容器

sudo docker attach 500...

之后的步骤就是与在本地系统命令行的操作一样,进入代码的文件夹,用python命令执行代码

九、安装nvidia-cuda

这里直接根据官方教程安装即可。

Installation Guide — NVIDIA Cloud Native Technologies documentation

安装完nvidia-cuda之后,再创建容器时加上**–gpus all**,即可在容器内调用cuda,即

sudo docker run -v /data:/data -itd --gpus all zhouxuanhan/pymarl:v1 bash

十、推送镜像到Docker Hub

sudo docker push XXX/pymarl:v1

常见命令

1. 查看所有镜像  docker images
2. 查找镜像         docker search XXXimage
3. 下载镜像         docker pull XXXimages:tag
4. 删除镜像         docker rmi XXXimages:ta
5. 启动容器         docker run -it aimge:tag /bin/bash
6. 退出容器         exit
7. 查看正在运行的容器 docker ps
8. 进入正在运行的容器 docker attach container-ID
9. 查看已停止运行的容器  docker ps -a
10.启动已停止的容器   docker start container-ID
11.停止容器   docker stop container-ID
12.重启已停止的容器 docker restart container-ID
13.退出容器终端 docker exec
14.更新镜像    1.先用镜像创建容器 docker run -it image:tag /bin/bash
               2.在容器内操作,然后commit 提交容器副本创建新的镜像
               docker commit -m=‘description' -a='author' container-ID author/image:tag2 

总结

总结一下,镜像实际上就是一个虚拟的操作系统,容器是镜像的实例化,在容器里操作和在本地系统的命令行操作没有任何区别,容器如果发生了改变,可以直接commit成新的镜像,方便下一次使用~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

贾俊平《统计学》第七章知识点总结及课后习题答案

一.考点归纳 参数估计的基本原理 1置信区间 (1)置信水平为95%的置信区间的含义:用某种方法构造的所有区间中有95%的区间包含总体参数的真值。(2)置信度愈高(即估计的可靠性愈高),则…

ABeam News | ABeam Consulting 荣获『SAP AWARD OF EXCELLENCE 2023』奖项

ABeam Consulting株式会社(总裁兼CEO 鸭居 达哉、东京都千代田区、以下简称为ABeam Consulting)在SAP 日本株式会社(董事长 铃木洋史、东京都千代田区、以下简称为SAP日本)表彰优秀合作伙伴的颁奖『SAP AWARD OF EXCELLENCE 2023』…

c3p0报错java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

1. 问题由来 今天第一次学习到c3p0的时候,学习资料上使用的是0.9.1.2版本。 我偷懒使用的是0.9.2版本。但是运行的时候会报错: 网上搜索了一下这个错误,很多人说去安装mchange-commons-0.2.jar 这个包 但是我看学习资料上没有去另外安装这…

nodejs+vue 图书借阅管理系统

该系统的应用可以减少工作人员的劳动强度,提高工作效率与管理水平,具有很大的价值。它可以使图书这项借阅业务操作简单,成功率高,使网上图书管理系统的管理工作向一个新的层次迈进。本论文是以构建图书借阅为目标,使用…

《100天精通Python丨从快速入门到黑科技》 >>> 目录导航

文章目录一、100 天精通 Python 丨基础知识篇100 天精通 Python 丨基础知识篇 —— 01、C 站最全 Python 标准库总结100 天精通 Python 丨基础知识篇 —— 02、Python 和 Pycharm(语言特点、学习方法、工具安装)100 天精通 Python 丨基础知识篇 —— 03、…

基于AIGC的3D场景创作引擎概述

通过改变3D场景制作流程复杂、成本高、门槛高、流动性差的现状,让商家像玩转2D一样去玩转3D,让普通消费者也能参与到3D内容创作和消费中,真正实现内容生产模式从PGC/UGC过渡到AIGC,是我们3D场景智能创作引擎一直追求的目标。前言随…

【VMD-SSA-LSSVM】基于变分模态分解与麻雀优化Lssvm的负荷预测【多变量】(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【C++基础】引用(引用的概念;引用的特性;常引用;使用场景:做输出型参数、大对象传参、做输出型返回值、返回大对象的引用);引用和指针的区别)

六、引用 6.1 引用的概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。(语法上) 格式:类型& 引用变量名(对象名) …

矮床酸阻滞技术及其在酸回收行业的应用

废酸是如何产生的? 为什么要进行废酸回收? 在轧钢厂在轧制过程中,铁与氧或铁与燃料燃烧时的生成物(CO2、H2O等)的化学作用,而形成一层氧化层,称为氧化皮。其实我们日常生活中接触到的金属件,尤其是铁件上的…

mmsegmentation 训练自己的数据集

一. MMSegmentation是什么? MMSegmentation 是一个基于 PyTorch 的语义分割开源工具箱,它是 OpenMMLab 项目的一部分。他与MMDetection类似,集成了各种语义分割算法,可以快速验证语义分割效果。 二. 环境准备 参考&#xff1a…

【C++】模版(一)

泛型编程、模版(一): 1.泛型编程: void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {double temp left;left right;right temp; }【…

电脑软件:office文档密码了怎么办,看完你就能自己找回了

Word、Excel、PPT作为大家日常办公的使用最频繁的办公软件。对于一些涉及个人隐私或者涉及企业机密性的文档文件,我们经常会给自己的文档加上密码。 但有时候文档时间比较久了、或者密码太多了,有时候我们会把文档的密码给忘记了,如果密码忘…

Shell练习

一、题目 1、编写函数,实现打印绿色OK和红色FAILED 判断是否有参数,存在为Ok,不存在为FAILED 2、编写函数,实现判断是否无位置参数,如无参数,提示错误 3、编写函数实现两个数字做为参数,返回最…

【大数据之Hadoop】十一、MapReduce之Shuffle、MapTask、ReduceTask工作机制

1 Shuffle机制 对于排序而言分为两个阶段,MapTask后和ReduceTask前。 2 MapTask工作机制 MapTask并行度由切片个数决定;切片个数由切片大小(切片大小取决于块大小、maxsize(Long的最大值)和minsize(默认为…

【华为机试真题详解JAVA实现】—字符串通配符

目录 一、题目描述 二、解题代码 一、题目描述 问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。 要求: 实现如下2个通配符: *:匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和…

为一副通用纸牌设计数据结构

为一副通用纸牌设计数据结构 大家好,我是易安,今天我们来聊一道笔试题,这也是我曾经面试华为时做过的题,今天分享给大家。 题目: 如何设计一个通用的扑克牌数据结构?请解释如何继承它来实现特定的扑克游戏…

wps 不显示公式_当Excel中使用函数不显示结果只显示公式时,该怎么解决呢?

在使用Excel过程中,有时候Excel中使用函数后,不显示结果只显示公式。 如下面使用vlookup函数时,只显示公式不显示结果。 遇到这种情况我们该怎么处理呢? 接下来,介绍几种造成该情况的原因以及相对应的解决方法。 1.如果…

BarTender.Application COM 多次调用引发后台进程数不断增加的问题

引用文章方法测试,目前未发现问题. Closing Instance Of Bartender – BarTender Support Portal (seagullscientific.com) Closing Instance Of Bartender FollowFollowed by one person Legacy Poster 9 years ago Hello again, Ive got BarTender automating…

LLM:Vicuna 7B模型简单部署体验

0、引入1、保存权重文件到阿里云盘2、部署环境3、上传权重文件到30904、下载安装源码4.1 下载编译安装源码4.2 安装5、开始使用6、直接使用我的镜像立即开启人机对话Debug:可能的报错0、引入 随着ChatGPT的火热,科技公司们各显神通,针对大语…

设计模式之中介者模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、中介者模式是什么? 中介者模式是一种行为型的软件设计模式,也称为仲裁者模式,顾名思义&am…