Ubuntu如何用Docker打包深度学习项目?请看这里!

docker就不用多介绍了吧

Docker 安装:

没什么好说的,参照官网:https://docs.docker.com/engine/install/ubuntu/

sudo apt-get updatesudo apt-get install ca-certificates curl gnupg lsb-release

添加GPG key:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

插曲:假如你使用官网的这行命令不成功,估计是网络问题,你可以:

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \"deb [arch=amd64] Index of /docker-ce/linux/ubuntu/ \$(lsb_release -cs) \stable"

本人在使用下面这条命令时,同样出现连接超时,就是docker.com的问题:

echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

如果你也是,你可以:
(1)在软件与更新力更换源:

(2)在/etc/docker/daemon.json脚本添加(我直接简单粗暴添加多个):

{"registry-mirrors": ["https://registry.docker-cn.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}

更新一下软件包并安装:

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

测试:

sudo docker run hello-world

会输出一连串东西,没报错就是正确的。

取消sudo执行docker:

有一说一,sudo docker xxx太烦了,好在可以设置

sudo cat /etc/group | grep docker
sudo groupadd docker    (一般来说安装docker后自动生成docker group)
sudo gpasswd -a ${USER} docker
sudo chmod a+rw /var/run/docker.sock
sudo systemctl restart docker

nvidia-docker安装

官方教程:
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#
docker

YOLOX下载与配置:

你会在当前文件夹获得一个YOLOX的文件夹

git clone https://github.com/Megvii-BaseDetection/YOLOX.git

创建Dockerfile,注意位置:

touch Dockerfile


在Dockerfile写上:

FROM pytorch/pytorch:latestADD . /WORKDIR /YOLOXRUN apt-get update && apt-get install -y build-essential libgl1-mesa-dev libglib2.0-dev
RUN pip3 install -U pip && pip3 install -r requirements.txt
RUN python setup.py develop

如果你希望在创建镜像后要运行什么测试的命令,直接在后面加

RUN python xxx.py  (根据需要)

什么意思呢,就是使用dockers hub 中发布的pytorch/pytorch:latest镜像作为基础镜像(下载速度感人),ADD . /表示将当前所有文件’添加到镜像的根目录下”/“。然后执行一系列指令完成YOLOX的环境安装。

你也可以使用其他pytorch版本的镜像,在这里查看:https://hub.docker.com/r/pytorch/pytorch/tags

下载权重放到YOLOX/下(只要你喜欢,随便放)
https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth

创建镜像

docker build -t dockertest:v1.0 .

不要漏了后面那个点,意思是根据当前目录下的Dockerfile进行创建,dockertest表示镜像名字,v1.0表示tag,就是一个标签,随便写
(省略一堆)
最后看到Successfully 的信息就行了
查看一下镜像,看到dockertest就表示成功了:

docker imags

启动一个容器

docker run -it --name task1 --gpus all dockertest:v1.0 /bin/bash

-it 表示交互式终端操作 , --name表示容器的名字, --gpus all表示使用GPU, 使用dockertest:v1.0镜像,(/bin/bash允许一个bash进程?)

然后你就会切换到容器的交互式终端中:
使用正常的YOLOX提供的demo命令即可进行测试:

python tools/demo.py image -n yolox-s -c yolox_s.pth --path assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device gpu

你会看到执行后的输出的信息,没报错就行.

退出容器:

exit

导出镜像

docker save -o docker_image.tar dockertest:v1.0

docker_image.tar是你要保存的文件名,也可以用xxx/xxx/docker_image.tar的形式。

发布镜像

将镜像发布到docker Hub中,这样其他人也可以下载,先登录docker,然后注意tag的格式,声明:这部分我没实测过

sudo docker login
sudo docker tag dockertest YOUR_DOCKER_ID/dockertest
sudo docker push YOUR_DOCKER_ID/dockertest

导入镜像

此时如果你想测试一下,找个其他主机啥的:

docker load -i docker_image.tar

你会看到这些信息,导入成功:

824bf068fd3d: Loading layer [==================================================>]  65.51MB/65.51MB
f15a0881ce19: Loading layer [==================================================>]   33.8MB/33.8MB
354dfcbe6a14: Loading layer [==================================================>]  6.197GB/6.197GB
0f801b69538d: Loading layer [==================================================>]  1.536kB/1.536kB
3c2e99e92150: Loading layer [==================================================>]  121.3MB/121.3MB
a1425ccadcb9: Loading layer [==================================================>]  438.3MB/438.3MB
b46ef3c5741b: Loading layer [==================================================>]  762.6MB/762.6MB
0f146ef9d82c: Loading layer [==================================================>]  18.93MB/18.93MB

你就可以看到新的主机下也有一个dockertest:v1.0的镜像。同样的你可以启动一个容器进行执行相关命令(跟上面的一样)

主机和容器文件交互:

(1)文件复制

docker cp xxx/xxx/test.txt cont:/
docker cp xxx/xxx/dataset cont:/root/  (复制文件夹)

将主机的xxx.xxx/test.txt这个文件复制到容器名为cont的’/'目录下,路径反过来就不要说了。
(2)路径映射

docker run -v xxx/xxx/data:/root/temp -it dockertest:v1.0

将主机的xxx/xxx/data路径映射到dockertest:v1.0容器的/root/temp路径,这样可以在容器内直接访问容器外的xxx/xxx/data文件夹

容器->镜像

如果你在容器中修改或添加了某些脚本,原始的dockertest:v1.0是不会有任何改变的,所以你希望保存这个修改后的容器作为镜像的话,(重新根据Dockerfile再创建太费事),直接将容器导出为镜像就行:

 docker commit -a 'boy' -m 'instruction' cont new_docker:v1.0

cont:容器名字 new_docker:新的镜像名字,其他随意。

其他指令

删除容器

docker ps -a  (查看CONTAINER_ID)
docker rm CONTAINER_ID

容器启动停止:

docker stop cont  (cont为容器名字)
docker start cont

进入容器:

docker exec -it cont /bin/bash

删除镜像:
先关掉该镜像实例化的容器才能删除:

docker images  (查看IMAGE_ID)
docker rmi IMAGE_ID

第二种创建镜像方式

一般深度学习项目环境都是在anaconda的虚拟环境下配置的,当然你可以在docker hub下载相应的镜像,这里提供一种新的创建镜像的方式,简单来说就是将虚拟环境和代码直接复制到anaconda/anaconda的容器中
参考链接:https://blog.csdn.net/qq_32101863/article/details/120344080

Docker打包深度学习项目相关推荐

  1. 快速学习docker的使用和打包深度学习项目

    1.安装docker和nvidia-docker 按照docker官网或者网上教程先后安装docker和nvidia-docker(建议按照官网的命令进行安装,若发生报错再去搜索如何解决) 2.编写D ...

  2. docker 不包含依赖 打包_Docker打包深度学习项目(解决:Opencv依赖库、共享内存)...

    最近比赛要提交打包好的CNN模型给主办方去测试,使用Docker镜像.这可难倒了我这个小白,搞了好几天才打包好.在这里记录一下Docker使用过程,希望能给广大同学们提供点帮助. 文章内容包含以下3个 ...

  3. Ubuntu 21.04 使用Docker部署深度学习项目(cuda11.2+cudnn8.8+deepface)

    文章目录 1.安装Docker 1.1 确定系统版本 1.2 卸载旧版本 1.3 设置stable镜像仓库 1.4 安装Docker ce 1.5 测试 1.6 阿里云镜像加速 1.7 重启服务器 2 ...

  4. 通过NVIDIA-Docker部署深度学习项目环境

    原文地址为:https://zhuanlan.zhihu.com/p/78541520 深度学习环境部署的方法有很多种,其中Docker化深度学习环境和项目是一个很不错的选择.这里写过一些深度学习主机 ...

  5. 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

    深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...

  6. 如何在实际中计划和执行一个机器学习和深度学习项目

    2019-11-27 20:27:28 作者:Sayak Paul 编译:ronghuaiyang 导读 做研究打比赛和真正的做一个机器学习和深度项目是不一样的,如果你有这方面的困惑的话,可以看看这篇 ...

  7. docker anaconda_深度学习炼丹炉配置[1] Docker+sshfs环境配置

    感谢 @田文善 同学供稿 目录 一.需求二.方案(一)docker 配置1.dockerfile 制作2.构建 docker 镜像3.运行 docker 容器4.使用 docker 容器5.环境复用( ...

  8. docker制作深度学习镜像(以windows环境下为例)

    向AI转型的程序员都关注了这个号???????????? 人工智能大数据与深度学习  公众号:datayx 用 Docker 安装深度学习环境,轻量.方便!整个系统大小仅需2~3G,用完还能带着走!一 ...

  9. Docker部署深度学习服务器,CUDA+cudnn+ssh

    通过Docker来创建多个容器(相当于多个linux系统),每个容器中的CUDA版本之间互相不影响.这样的好处是可以在项目需要时,不改动主机环境的前提下运行多个CUDA版本.同时,也可以为不同的使用人 ...

最新文章

  1. 中国联通备战5G MWC发布《Edge-Cloud平台架构及产业生态白皮书》
  2. 英特尔CEO:英特尔下一个市场将是无人驾驶汽车
  3. 博士申请 | 北京大学信息科学技术学院段凌宇教授招收2022级博士生
  4. ASP.NET 实现Base64文件流下载PDF
  5. React-引领未来的用户界面开发框架-读书笔记(二)
  6. Eclipse 插件ibeetl
  7. 任正非:鸿蒙不用于手机;IBM 340 亿美元红帽收购案完成;Firefox 68.0 发布 | 极客头条...
  8. GitHub - ErnestChen1/SmartSpeaker: 一个基于云端语音识别的智能控制设备,类似于天猫精灵,小爱同学。采用的芯片为stm32f407,wm8978,esp8266。...
  9. 计算机三维建模方法,三维建模知识介绍
  10. 关于新加坡的身份证与电话号码验证
  11. Fine-grained prosody modeling
  12. spss进行多元线性回归并分析表格
  13. 侯圣文大数据体验课笔记,大数据基础,离线数仓,实时计算
  14. AI证件照背景色修改,几行代码搞定
  15. Java复习小游戏——“登仙长阶“【已收工】
  16. mac 剪切移动文件
  17. 由点及面,一叶知秋------集合大家庭
  18. 《今日影评》前瞻《疯狂的外星人》:喜剧远大于科幻
  19. ADX,DSP,SSP广告系统搭建
  20. <A Tale of Evil Twins: Adversarial Inputs versus Poisoned Models>阅读笔记

热门文章

  1. 【跨境电商】独立站运营需要面临哪些困难?(二)
  2. python鬼屎表达式
  3. 电子合同不等于电子签章不具有法律效力
  4. 数据仓库(7)数仓规范设计
  5. 遥感、GIS及GPS在土壤空间数据分析、适应性评价、制图及土壤普查中的应用
  6. 开启与配置SMTP服务器
  7. collate utf8_bin什么意思
  8. 实战: unicorn生成免杀木马,绕过win10防火墙和windows defender
  9. 冰冰学习笔记:异常处理
  10. 【ceph】什么是NFS-Ganesha和fuse