当前位置: 首页 > news >正文

Docker入门——实战图像分类

一、背景

思考:

在一个项目的部署阶段,往往需要部署到云服务器或者是终端设备上,而环境的搭建往往是最费时间和精力的,特别是需要保证运行环境一致性,有什么办法可以批量部署相同环境呢?

Docker本质——打包环境;

将本机的环境和代码一同打包在docker环境中,生成一个容器,可以部署到任何服务器和机器下,节省了环境安装的精力并确保了环境的一致性;

二、window安装docker

Window建议安装docker toolbox,因为window家庭版安装docker for window可能会出现不适配情况;

下载地址:https://github.com/docker-archive/toolbox/releases

(多个版本,选择一个版本即可,下载exe版本)

在这里插入图片描述

安装过程就是无脑安装即可,默认安装在C盘,安装后会出现两个程序,一般使用第一个程序;

在这里插入图片描述

打开Docker Quickstart Terminal,默认会下载一个最新的镜像,由于网络问题会出现以下问题:

在这里插入图片描述

这里手动复制下载的地址,在浏览器中下载后放在C:\Users\用户名\ .docker\machine\cache下:

在这里插入图片描述

重新运行一遍,短暂初始化后出现以下界面,即代表Docker安装成功:

在这里插入图片描述

接下来就可以实际使用docker来安装一个环境了;

三、配置阿里云加速器

官方容器下载地址:https://hub.docker.com/

官方下载存在一个问题,就是下载速度不够快,这里需要配置以下阿里云加速器;

步骤:

1、登录阿里云平台,找到镜像加速器选项;

网站地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

在这里插入图片描述

2、在Docker中配置,执行以下命令:

1.docker-machine ssh default 
2.sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror= 加速器地址|g" /var/lib/boot2docker/profile 
3.exit 
4.docker-machine restart default

在cmd命令行下执行docker info,如出现下面信息表示加速成功;

在这里插入图片描述

四、下载pytorch镜像

首先在官方hub里面找需要安装的镜像名称;

https://hub.docker.com/r/pytorch/pytorch

这里复制右边的命令到本地docker启动窗口即可,安装完毕后查看docker images即可看到;

启动该镜像:

docker run -it pytorch/pytorch

在这里插入图片描述

这里可以看出,该镜像自带的系统还是ubuntu,并且已经预装好了python3.7,当然这是一个极简环境,也就是说很多要用的包是没有的,需要自己安装;

比如要安装一个opencv的话,最好用上阿里源进行安装,这样安装速度是最快的;

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

这里镜像已经成功安装了,下面可以跑一个简单的分类案例试试;

五、docker中run一个分类案例

首先需要将本地的项目copy到容器中,在拷贝地址下打开git;

在这里插入图片描述

后面这一串是容器id和需要拷贝到的文件夹地址(默认会创建)

安装缺少的一些包后,运行一下程序看看能否成功;

这里我们是通过服务部署的方式运行一个模型,所以会看到服务开启的界面:

在这里插入图片描述

但是我们需要打开另一个docker窗口开执行程序,这里就需要用到新的命令了;

docker exec -it id /bin/bash

在这里插入图片描述

可以看出我们成功请求并且得到返回结果,到这里可以开始自由的在docker跑自己的程序了,缺什么就安装什么即可!

六、上传自己的docker环境

在阿里云容器管理界面创建一个新的仓库;

在这里插入图片描述

点击管理会有一些操作命令指示,根据步骤在本机执行即可;

1、登录阿里云Docker Registry
docker login --username= registry.cn-hangzhou.aliyuncs.com
2、将镜像推送到Registry
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/..../pytorch:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/.../pytorch:[镜像版本号]

在这里插入图片描述

这里显示已经正在上传中,镜像文件比较大,需要的时间比较长;

七、Docker的一些进阶操作

在使用Jeston jx1开发版时候,使用docker配置GPU环境需要操作复杂一些,这里简单讲述下;

首先就是将本机的Nvidia环境映射到docker容器中;

docker run --runtime nvidia -it 【容器id】 /bin/bash

这里runtime超参数可以将本机的CUDA的环境,一些动态库直接映射到容器中去,在使用的时候也遇到一些问题,就是映射并没有完全成功,其原因找了很久,最后在ubuntu下重新安装一遍nvidia-docker这个包解决了,遇到问题的可以试试,这时候容器中的nvcc版本就是和本机一致的;

下一步就是将本机的一些数据或模型映射到容器中,虽然也可以用docker cp命令将文件copy到容器中,但如果大的数据集这个时间会花费很长,采用映射的方式是最方便快捷的,并且生成的新的图像也可以在本机上直接访问,不需要来回传输;

docker run -it --rm --runtime nvidia -v 【容器文件路径】:/【本机文件路径】 【容器ID】 /bin/bash

还有一些进阶使用,比如如何在docker中使用摄像头,如何在docker运行带图形化的界面程序,在这里就不具体讲解了,如果有需要的可以查阅一下文档;

总结

本篇Docker入门文章并没有具体讲解Docker的一些底层原理,而是从实际使用的角度出发,用一个图像分类的案例讲述了如何拉取镜像并使用,如何上传自己的镜像供他人使用;

如果有一些问题或者想法的话欢迎私信探讨!

最后放最爱的小企鹅!

img

相关文章:

Docker入门——实战图像分类

一、背景 思考: 在一个项目的部署阶段,往往需要部署到云服务器或者是终端设备上,而环境的搭建往往是最费时间和精力的,特别是需要保证运行环境一致性,有什么办法可以批量部署相同环境呢? Docker本质——…...

【HarmonyOS北向开发】-02 第一个程序测试

飞书原文档链接:Docs...

关于小程序收集用户手机号行为的规范

手机号在日常生活中被广泛使用,是重要的用户个人信息,小程序开发者应在用户明确同意的前提下,依法合规地处理用户的手机号信息。 而部分开发者在处理用户手机号过程中,存在不规范收集行为,影响了用户的正常使用体验&a…...

js判断手指的上滑,下滑,左滑,右滑,事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动

js判断手指的上滑,下滑,左滑,右滑,事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动 pc端 判断鼠标滚轮向上滚动滑轮向下滚动 const scrollFunc (e) > { e e || window.event; let wheelDelta e.wheelDelta ? e.wheelDelta…...

ES 一些简单 的查询注意事项

term query 不分词字段 带分数 where namexxx filter 分词字段 不分词字段 不带分数 Terms query 所有类型 带分数 where name in(xxx) Range query where name between xxx and xxx Exists Regexp Match query 分词字段/基础字段 Multi-match query 多个分词字段/基础字段 Boo…...

LeetCode //C - 57. Insert Interval

57. Insert Interval You are given an array of non-overlapping intervals intervals where intervals[i] [ s t a r t i , e n d i start_i, end_i starti​,endi​] represent the start and the end of the i t h i^{th} ith interval and intervals is sorted in asce…...

android手势事件

与手势事件有关的方法 dispatchTouchEvent():该方法将触摸事件分发给相应的视图或视图组。onInterceptTouchEvent():该方法用于判断是否需要拦截触摸事件,如果需要拦截,则返回 true,否则返回 false。onTouchEvent()&a…...

[网络安全学习篇01]:windowsxp、windows2003、windows7、windows2008系统部署(千峰网络安全视频笔记)

VM 虚拟机:VMware Workstation 15.5 PRO(建议升至最高版本) 部署windows-xp系统 一、配置虚拟机硬件并安装系统 1、在VMware文件目录下创建一个空文件夹将其命名位:winxp-1 2、打开VMware软件,点击创建新的虚拟机。…...

CANoe自动化工程的搭建

基于XMLCAPL建立自动化工程 1、导入ini文件2、新建 Test Environment3、报告类型4、代码编写 1、导入ini文件 工程的配置的文件,配置DUT相关信息,具体视工程而编写内容。 2、新建 Test Environment 1、新建XML测试用例环境 2、导入XML测试用例文件 …...

第6章:支持向量机

间隔与支持向量 w为法向量,决定的是超平面的方向。b是偏移项,决定了超平面与原点之间的距离。 为什么最大化间隔,得到的就是最优平面呢? 当超平面没有正确划分正负样本时,几何间隔为负数。几何间隔,各个…...

ROS机器人启动move base时代价地图概率性无法加载的原因及解决方法

最近,使用ROS机器人,在启动move_base 节点时,概率性会出现全局和局部代价地图不加载的问题,此时,发布目标点也无法启动路径规划。而且该问题有时候出现概率很低,比如启动10次,会有1次发送该情况…...

快速上手PyCharm指南

PyCharm简介 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动…...

数字图像处理 - 图像处理结合机器学习的应用示例

在本文中,特别关注树叶分类机器学习技术的实现。我们的目标是演示如何利用机器学习算法来分析一系列叶子照片,从而实现准确分类并提供对植物领域有价值的算法。 图像处理中机器学习的本质 机器学习使计算机能够学习模式并根据视觉数据进行预测,彻底改变了图像处理领域。在叶…...

Linux命令200例:zip和unzip用于压缩和解压文件(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…...

通过 HttpClient 发送请求

文章目录 1. 引入 maven 依赖2. 发送 GET 方式的请求3. 发送 POST 方式的请求 1. 引入 maven 依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId> </dependency>2. 发送 GET 方式的请求…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——假言——第二节 必要条件假言+第三节 特殊假言

文章目录 第二节 必要条件假言命题-才真题(2018-26)-假言-必要假言-才-(1)建模-“才”-后推前。-(2)A→B的公式化转换-A→B的等价命题:①逆否命题:非B→非A。真题(2020-26)-假言-必要假言-才-(1)建模-“才”-后推前。-(2)A→B的公式化转换-A→B的等价命题:①逆…...

算法笔记:A*算法

A*算法是一种很常用的路径查找和图形遍历算法。它有较好的性能和准确度 1 中心思路 A*算法通过下面这个函数来计算每个节点n的优先级 f(n)g(n)h(n) f(n)是节点n的综合优先级。当选择下一个要遍历的节点时&#xff0c;总会选取综合优先级最高&#xff08;f(n)值最小&#xff0…...

postgresql 分类排名

postgresql 分类排名 排名窗口函数示例CUME_DIST 和 NTILE 排名窗口函数 排名窗口函数用于对数据进行分组排名。常见的排名窗口函数包括&#xff1a; • ROW_NUMBER&#xff0c;为分区中的每行数据分配一个序列号&#xff0c;序列号从 1 开始分配。 • RANK&#xff0c;计算每…...

TCP服务器实现—多进程版,多线程版,线程池版

目录 前言 1.存在的问题 2.多进程版 3.多线程版 4.线程池版 总结 前言 在上一篇文章中使用TCP协议实现了一个简单的服务器&#xff0c;可以用来服务端和客户端通信&#xff0c;但是之前的服务器存在一个问题&#xff0c;就是当有多个客户端连接服务器的时候&#xff0c;服…...

Nginx 配置文件的完整指南 (二)

文章目录 四、反向代理配置4.1 proxy_pass效果1—路径重写效果2—转发到其他服务器 4.2 proxy_pass使用规则4.3 proxy_set_header4.3.1 修改请求协议 五、负载均衡配置5.1 upstream5.2 server5.3 负载均衡策略5.3.1 轮询5.3.2 加权轮询5.3.3 最少连接5.3.3 ip_hash&#xff1a;…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...