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

docker应用实例及dockerfile

实际应用

神经网络项目由x86cpu的linux环境移到arm cpu架构上运行,使用docker进行测试以及环境配置。

  • docker load -i 镜像压缩文件.tar
    • docker load -i命令用于从一个压缩的镜像存档文件(通常是以.tar扩展名结尾)中加载镜像到本地Docker引擎中。
    • docker load:加载一个本地的镜像。
    • -i:指定输入文件,后面跟着要加载的镜像存档文件。
  • docker images 查看镜像
  • docker run --name 容器名 -it -e ASCEND_VISIBLE_DEVICES=0 -p 1234:5678 镜像id /bin/bash
    • docker run:运行一个新的容器。
    • -it:使用交互式终端运行容器,其中-i表示交互式,-t表示分配一个伪终端。
    • -e ASCEND_VISIBLE_DEVICES=0。环境变量选择使用哪个NPU卡
    • -p 1234:5678:端口映射,容器内部端口与宿主机端口进行映射
    • /bin/bash:进入到容器的bash终端
  • docker rename 原名称 现名称
  • docker cp <source_path> <container_name>:<destination_path>
  • docker ps
    • 查看正在运行的容器
  • docker ps -a
    • 查看所有容器
  • docker start 容器名
  • dockers stop 容器名
  • docker rm 容器名
  • docker exec -it <container_name> <command>
    • <container_name> 是要进入的容器的名称或ID。
    • <command> 是要在容器内执行的命令。通常,我们使用/bin/bash或/bin/sh作为命令,以启动一个交互式Shell会话。

在Docker容器中安装NPU驱动固件(宿主机装了,docker可以不装)

  • 在宿主机上已经安装了相应的NPU驱动和固件。
  • 容器在创建时,需要与宿主机共享NPU设备。
    • docker run --privileged -it -v /dev:/dev <image_name> bash
    • --privileged参数来赋予容器特权,使其能够访问宿主机的设备。同时,使用-v /dev:/dev参数来共享宿主机的/dev目录,包括其中的设备文件。

ChatGLM部署华为arm服务器

  • 安装toolkit工具包
  • 容器内没安装NPU驱动固件,所以需要到.bashrc中配置环境变量
    • 环境变量要加export xxx=xxxx
  • 安装torch依赖
  • 解压代码包
  • 创建模型权重软链接
  • 替换transformers的utils.py文件(可以先不做)
  • 权重切分与执行

Docker架构

镜像(三类)

  • 基础镜像

Ubuntu、Debian、CentOs、Windows、MacOs

  • docker commit构建镜像

Docker commit 是将正在运行的容器保存为新的镜像的一种方法。将当前容器的状态快照成一个新的镜像。优点快速和方便,缺点占用空间大、冗余、效率低、可重复性弱、容易出错。

  • 从镜像运行容器,实际上是在镜像顶部上加了一层可写层,所有对容器文件系统的修改,都在这一层中进行,不影响已经存在的层。从容器构建镜像,实际上是把容器的顶层固化到镜像中。镜像的体积只会增大,不会减小。
# 将容器转换为镜像
docker commit 容器id 镜像名称:版本号
# 将镜像打包为压缩包,用于传输
docker save -o image_name.tar image_name
# 将镜像压缩包解压为镜像
docker load -i image_name.tar
  • dockerfile构建镜像

Dockerfile 是一种文本文件,它包含了一系列指令和配置,用于自动化构建 Docker 镜像。优点灵活性和可重复性。比docker commit更具优势。

  • 可重复性:使用 Dockerfile 可以完全复制镜像构建过程,确保每次构建的结果一致。
  • 可扩展性:Dockerfile 允许您定义容器的多个层次,并在每个层次上进行构建和修改。轻松地添加、删除或更新组件。
  • 可维护性:Dockerfile 是一个文本文件,可以与代码存储在同一版本控制系统中,并且可以通过版本控制工具进行追踪和管理。这使得团队成员可以共同协作和维护镜像构建过程。

容器

仓库

仓库可看成一个代码控制中心,用来保存镜像 Docker Hub(https://hub.docker.com)

dockerfile

FROM acltransformer:base  # ubuntu:18.04 指定父镜像,指定dockerfile基于哪个镜像进行创建以华为昇腾172.16.15服务器为例RUN apt-get update && apt-get install -y \  # 执行命令wget \language-pack-zh-hans && \mkdir /dataWORKDIR /data  # 工作目录
COPY Dockerfile_dir ./Dockerfile_dir  # 复制文件 这是个文件夹WORKDIR /data/Dockerfile_dir/npu_tools
RUN /bin/bash Miniconda3-latest-Linux-aarch64.sh -b -p /opt/conda && \echo 'export PATH="/opt/conda/bin:$PATH"' >> ~/.bashrc && \RUN conda create -n py37 python=3.7
ENV PATH /opt/conda/envs/chatglm_py37/bin:$PATH  # 环境变量RUN /bin/bash npu_env.sh && \pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simpleENTRYPOINT ["/bin/bash",  "-c", "/opt/conda/envs/py37/bin/python3.7 main.py"] # 设置容器的入口点

在编写 Dockerfile 时,通常会遵循一个原则:尽可能使步骤少而有效。

  • 减小镜像大小:每个步骤都会在镜像中创建一个新的层次,并增加镜像的大小。较少的步骤意味着较少的层次,从而减小了镜像的总体大小。
  • 提高构建速度:每个步骤都需要执行一些操作,较少的步骤意味着较少的操作,从而减少了构建过程的时间。
  • 简化维护和调试:较少的步骤意味着较少的代码和配置,使得维护和调试变得更加简单。

使用下面命令来用dockerfile创建docker镜像。

docker build -t chatglm_npu:v2 -f Dockerfile .
docker build --platform linux/arm64/v8 -t chatglm_npu:v1 -f Dockerfile .
docker build --platform linux/amd64 -t dispatch:v1 -f Dockerfile .

相关文章:

docker应用实例及dockerfile

实际应用 神经网络项目由x86cpu的linux环境移到arm cpu架构上运行&#xff0c;使用docker进行测试以及环境配置。 docker load -i 镜像压缩文件.tar docker load -i命令用于从一个压缩的镜像存档文件&#xff08;通常是以.tar扩展名结尾&#xff09;中加载镜像到本地Docker引擎…...

【Qt之QWizard】使用1

QWizard使用 描述方法枚举&#xff1a;enum QWizard::WizardButton枚举&#xff1a;enum QWizard::WizardOption枚举&#xff1a;enum QWizard::WizardStyle枚举&#xff1a;enum QWizard::WizardPixmap常用成员方法槽函数信号 示例设置标题添加page页设置按钮文本设置自定义按…...

移植LVGL到单片机的一个demo简单介绍

简介 背景&#xff1a; 本文使用的是主控IC为stm32f103zet6, 显示IC为ST7735s&#xff0c;它是128*160的像素&#xff0c;色深为RGB565颜色。 官方虽然说LVGL移植平台只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面。但我移植到stm32f103c8t6&#xff0c;不管怎么修改配…...

rust_for_linux驱动完整版记录

文章目录 [清华开源操作系统训练营]《Rust fox Linux》课程的练习1-2完整版记录。1. 环境搭建2. 编译rust内核2.1 下载源代码2.2 安装rust支持2.3 检查linux内核是否支持rust2.4 编译linux内核 3. aarch64的qemu环境3.1.下载源代码3.2. 解压编译安装3.3. 配置环境变量3.4.验证 …...

Android拖放startDragAndDrop拖拽Glide灵活加载堆叠圆角图,Kotlin(6)

Android拖放startDragAndDrop拖拽Glide灵活加载堆叠圆角图&#xff0c;Kotlin&#xff08;6&#xff09; Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图&#xff0c;Kotlin&#xff08;5&#xff09;-CSDN博客文章浏览阅读1.3k次。&#xfeff;&#xfeff;Android Dyna…...

计算机网络课后作业2023秋

计算机网络第三版吴功宜版 课后作业 第一章作业三、计算与问答3.73.8 第二章作业三、计算与问答3.23.53.6 第三章作业三、计算与问答3.13.53.73.8 第四章作业三、计算与问答3.13.2 第五章作业三、计算与问答3.13.33.4VLAN交换机模式模式切换重置交换机VLA&#xff2e;配置命令其…...

阿里云国际站:全球加速GA

文章目录 一、前言 二、阿里云全球加速的概念 三、阿里云全球加速的功能优势 四、阿里云全球加速的原理 五、阿里云全球加速的应用场景 六、写在最后 一、前言 随着互联网的快速发展&#xff0c;网站速度已经成为了用户访问体验的一个重要指标。阿里云加速作为一种新的技…...

M2LC-Net

模型结构 作者未提供代码...

Jenkins 质量扫描

代码质量扫描工具&#xff08;SonarQube&#xff09; 质量评审 SonarQube有四个关键组件 ◼ SonarQube Server运行有三个组件 ◆ Web Server&#xff1a;UI ◆ Search Server&#xff1a;为UI提供搜索功能&#xff0c;基于ElasticSearch ◆ Compute Engine Server&#xff1a…...

【LeetCode刷题笔记】滑动窗口

992. K 个不同整数的子数组 解题思路: 滑动窗口 , 题目问题转化为: 求 「最多存在 K 个不同整数的子数组的个数」 与 「最多存在 K - 1 个不同整数的子数组的个数」 之差, 就是题目所求的 「恰好存在 K 个不同整数的子数组的个数」 , 最终问题就变成求解滑动窗口内,以 R …...

笔试题之指针和数组的精讲

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…...

.secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言&#xff1a; 勒索病毒成为了网络安全的一项严峻挑战&#xff0c;其中.secret勒索病毒尤为引人注目。这种恶意软件通过加密用户的数据文件&#xff0c;使其无法访问&#xff0c;并勒索受害者支付赎金以获取解密密钥。本文将介绍.secret勒索病毒的基本信息&#xff0c;以及…...

junit写搜索树测试

用法 assertTrue(range.contains("Two")); 2个参数,右边错就打印左边. AbstractSelfBalancingBinarySearchTree abt; AbstractBinarySearchTree.Node node; Before public void setUp() { abt new AbstractSelfBalancingBinarySearchTree() { Override protecte…...

顺丰接口对接-订单创建与取消(java单元测试)

api文档 下单接口 &#xff1a;https://qiao.sf-express.com/Api/ApiDetails?level3393&interName%E4%B8%8B%E8%AE%A2%E5%8D%95%E6%8E%A5%E5%8F%A3-EXP_RECE_CREATE_ORDER 取消订单接口&#xff1a; https://qiao.sf-express.com/Api/ApiDetails?level3339&interNa…...

C++:OJ练习(每日练习!)

编程题&#xff1a; 题一&#xff1a;计算日期到天数的转换 计算日期到天数转换_牛客题霸_牛客网 (nowcoder.com) 示例1 输入&#xff1a; 2012 12 31 输出&#xff1a; 366 思路一&#xff1a; 第一步&#xff1a;创建年&#xff0c;月&#xff0c;日的变量&#xff0c;并按…...

GPTs Hunter 是什么?

原文&#xff1a; https://openaigptguide.com/openai-gpts-hunter/ GPTs Hunter 是一个功能强大的免费导航网站&#xff0c;支持多语言&#xff0c;提供用户友好的界面。 GPTs Hunter&#xff1a;功能强大的免费导航网站 GPTs Hunter是一个功能强大的免费导航网站&#xff…...

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时 文章目录 导入库定时器初始化延时函数定时中断回调调用函数打包附录&#xff1a;列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 首先 这个定时器是硬件底层级别的 优先级最高 如果调用 会导致GN…...

HDU 1027:Ignatius and the Princess II ← next_permutation()

【题目来源】http://acm.hdu.edu.cn/showproblem.php?pid1027【题目描述】 Now our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166 is about to kill our pretty Princess. But now the BEelzebub has to beat our hero first. feng5…...

主题讲座:全球增材制造现状与未来(暨香港科技大学广州|智能制造学域2024博士学位全额奖学金项目)

时间&#xff1a;2023 年11月16日&#xff08;星期四&#xff09;14:30 地点&#xff1a;合肥工业大学 学术会议中心三楼报告厅 主讲嘉宾&#xff1a;陈模军 助理教授 https://facultyprofiles.hkust-gz.edu.cn/faculty-personal-page/CHEN-Mojun/mjchen 报名表直达&#xff1…...

hugeGraph修改PropertyKey属性类型

修改PropertyKey字段属性的类型&#xff0c;发现没办法保留数据的前提下修改&#xff0c;智能是先删除数据&#xff0c;然后再修改&#xff0c;或者备份后修改再恢复。 方法一、 修改groovy脚本中的Text为Int后重新建元数据 schema.propertyKey(“youkey”).asText().valueSing…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

FTXUI::Dom 模块

DOM 模块定义了分层的 FTXUI::Element 树&#xff0c;可用于构建复杂的终端界面&#xff0c;支持响应终端尺寸变化。 namespace ftxui {...// 定义文档 定义布局盒子 Element document vbox({// 设置文本 设置加粗 设置文本颜色text("The window") | bold | color(…...

网络安全问题及对策研究

摘 要 网络安全问题一直是近年来社会乃至全世界十分关注的重要性问题&#xff0c;网络关乎着我们的生活&#xff0c;政治&#xff0c;经济等多个方面&#xff0c;致力解决网络安全问题以及给出行之有效的安全策略是网络安全领域的一大目标。 本论文简述了课题的开发背景&…...

Faiss vs Milvus 深度对比:向量数据库技术选型指南

Faiss vs Milvus 深度对比&#xff1a;向量数据库技术选型指南 引言&#xff1a;向量数据库的时代抉择 在AI应用爆发的今天&#xff0c;企业和开发者面临着如何存储和检索海量向量数据的重大技术选择。作为当前最受关注的两大解决方案&#xff0c;Faiss和Milvus代表了两种不同…...

centos挂载目录满但实际未满引发系统宕机

测试服务器应用系统突然挂了&#xff0c;经过排查发现是因为磁盘“满了”导致的&#xff0c;使用df -h查看磁盘使用情况/home目录使用率已经到了100%,但使用du -sh /home查看发现实际磁盘使用还不到1G&#xff0c;推测有进程正在写入或占用已删除的大文件&#xff08;Linux 系统…...