docker打包介绍

news2024/12/26 21:17:25

最近在做一个开源项目,遇到开发者问各种问题,发现都是系统和软件版本的差异引起的。于是了解了一下docker的使用,发现docker真是个好东东,基本解决了各种版本差异的问题,真正做到了一键部署使用。

先熟悉一下docker里的概念,docker分为镜像和容器,镜像是一个静态的文件,用于分发部署。容器是镜像运行起来后的运行时对象,可以在容器里安装软件、添加文件等,修改后可以用docker commit将容器打成一个新的镜像。 说的通俗一点,镜像就是一份安装光盘,容器是安装在主机上的操作系统环境。

整体流程如下图所示

1,最基本的镜像有ubuntu20.04等,但这种只有基础的操作系统。如果用于深度学习,最好已经安装了显卡驱动和cuda等工具,可以上这里CUDA | NVIDIA NGC挑选合适的镜像版本。

用docker pull xxx 拉取镜像到本地,然后可以用docker images查看本地镜像列表。

如果需要删除镜像,用docker rmi <image_id>

2,运行镜像生成一个容器,docker run -it --gpus all <image_id>,其中-it表示启动时进入一个交互命令行,后面可以在这个命令行安装软件等各种操作;--gpus all表示容器需要用到宿主机的显卡,如果不需要用显卡不要加这个。如果中途退出了命令行,可以用docker ps -a 找到这个容器,用docker start <container_id>启动容器,然后用docker exec -it <container_id> /bin/bash 重新进入命令行。 如果需要删除容器,用docker rm <container_id>

正式用docker时用命令docker run --rm --gpus all <image_id>,这时不需要进入交互命令行,--rm表示退出docker时会自动清除容器,这时用docker ps -a也找不到这个容器了。

3,在docker的交互命令行可以进行各种操作,跟在宿主机上操作一样。如果需要从宿主机拷贝文件到容器中,在宿主机上运行命令docker cp <path1> <container_id>:<path2>,其中path1为宿主机上文件路径,path2为容器中文件路径。

可以修改容器里的~/.bashrc,添加自启动命令,这样启动容器后,会自动执行这些命令

4,容器运行环境搭好后,用docker commit <container_id> <image_name>:<tag> 将容器打包成一个新的镜像,打包完成后用docker images可以看到这个新的镜像。

5,发布镜像到阿里云,先上阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台创建一个命名空间,

docker login --username=xxx registry.cn-hangzhou.aliyuncs.com  #登录阿里云
docker tag <image_name>:<tag> registry.cn-hangzhou.aliyuncs.com/<命名空间>/<image_name>:<tag>
docker push registry.cn-hangzhou.aliyuncs.com/<命名空间>/<image_name>:<tag>

如果不想发布到网上,只想本地存成一个文件,可以用命令docker export <container_id> > xxx.tar,将容器打包成一个文件,然后将这个文件拷到其他电脑上,用docker import xxx.tar <image_name>:<tag> 来导入成镜像 

docker运行中缓存清除,可以用命令docker builder prune,docker system prune

题外话

其实我们在阿里云上的云服务器就是阿里基于物理主机给我们开了一个容器而已,我们又在这个容器里用docker新开了更多容器,有点像俄罗斯套娃。我们的现实世界又何尝不是套娃呢。

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

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

相关文章

VS2022 | 显示Unreal Engine日志

VS2022 | 显示Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志 视图 -> 其他窗口 -> Unreal Engine日志

ORACLE体系结构逻辑结构-表空间、段、区和数据块

实例 实例是指在内存中分配的一块共享内存区域&#xff08;SGA&#xff09;和一组后台进程&#xff08;或线程&#xff09;&#xff0c;它们用于访问和控制数据库。3实例是Oracle数据库的运行时环境&#xff0c;它是数据库的动态部分&#xff0c;它可以启动和关闭&#xff0c;…

本地部署 big-AGI

本地部署 big-AGI 1. big-AGI 介绍2. Github 地址3. 本地部署 big-AGI4. 访问 big-AGI5. 配置 API key6. 测试一下 1. big-AGI 介绍 欢迎使用 big-AGI &#x1f44b;&#xff0c;这是一款面向需要功能、形式、简单性和速度的专业人士的 GPT 应用程序。 big-AGI 由 10 个供应商…

静态网页设计——崩坏3(HTML+CSS+JavaScript)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; 使用技术&#xff1a;HTMLCSSJS&#xff08;静态网页设计&#xff09; 主要内容&#xff1a;对游戏崩坏3进行简单介绍。 https://www.bilib…

ATTCK视角下的信息收集:组策略信息收集

目录 什么是组策略&#xff1f; 本地组策略收集 域组策略收集 组策略存储收集 组策略对象收集 什么是组策略&#xff1f; Windows中的组策略&#xff08;Group Policy&#xff09;是一种管理和配置Windows操作系统的功能&#xff0c;它允许系统管理员对计算机和用户的行为…

Photoshop Express一款出色的照片编辑器

​【应用名称】&#xff1a;Photoshop Express ​【适用平台】&#xff1a;#Android ​【软件标签】&#xff1a;#Photoshop ​【应用版本】&#xff1a;12.1.2 ​【应用大小】&#xff1a;223MB ​【软件说明】&#xff1a;软件升级更新。一款出色的照片编辑器&#xff0c…

Xshell连接Ubuntu失败

错误&#xff1a; Xshell连接Ubuntu失败。 Connecting to 192.168.xx.xxx:22…Could not connect to 192.168.xx.xxx’ (port 22): Connection failed. 解决方案&#xff1a;边解决&#xff0c;边测试Xshell是否可以连接 1、SSH 服务未启动&#xff1a; 确保 Ubuntu 上的 S…

回车与换行的区别。CR、LF、CRLF的区别。\r \n \r\n

1.先上结论 中文英文英文缩写ASCⅡ转义ASCⅡ值系统回车Carriage ReturnCR\r13MacIntosh&#xff08;早期的Mac&#xff09;换行LinefeedLF\n10Unix/Linux/Mac OS X&#xff08;现在的Mac&#xff09;回车并换行CRLF\r\nWindows 2.详解 很长一段时间里&#xff0c;对于CRLF、C…

swing快速入门(四十二)JTree的基本创建

注释很详细&#xff0c;直接上代码 新增内容 &#x1f526;JTree的创建 &#x1f526;设置节点之间的连线 &#x1f526;设置节点之间的水平分割线 &#x1f526;设置根节点的展开折叠图标 &#x1f526;设置是否隐藏根节点 package swing31_40;import javax.swing.*; import j…

【Electron】 Vite项目 初始配置 scss

pnpm add -D sasssrc下面创建 styles/main.scss 文件 mian.ts 内引入 ./styles.scss 文件 import ./styles/main.scss 测试scss是否生效&#xff1a; styles/mian.scss :root{--mian:red; } App.vue <template><div>你好</div> </template><s…

锂电池低温充电效率低、容量低的原因

前言&#xff1a;锂离子电池在充电时&#xff0c;Li从正极脱嵌并嵌入负极&#xff1b;但是当一些异常情况&#xff1a;如负极嵌锂空间不足、Li嵌入负极阻力太大、Li过快的从正极脱嵌但无法等量的嵌入负极等异常发生时&#xff0c;无法嵌入负极的Li只能在负极表面得电子&#xf…

Django 4.2.7 ORM 连接MySQLServer 完成单表CRUD

文章目录 Django ORM介绍1.使用pycharm新建一个Django项目2.修改settings.py文件中 DATABASES3.创建APP4.创建模型5.操作数据库 Django ORM介绍 Django 模型使用自带的 ORM。 对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称 ORM &#xff09;用于实现面向…

【动态代理详解】

文章目录 1. 关于代理1.1 代理的概述1.1.1 什么是动态代理1.1.2 动态代理能做什么 1.2 什么是代理1.2.1 生活中的代理1.2.2 为什么要找中介&#xff1f; 1.3 开发中的代理模式&#xff08;代理&#xff09;1.3.1 使用代理模式的作用 1.4 实现代理的方式 2. 静态代理2.1 什么是静…

华为ipv4+ipv6双栈加isis多拓扑配置案例

实现效果&#xff1a;sw1中的ipv4和ipv6地址能ping通sw2中的ipv4和ipv6地址 R2-R4为存IPV4连接&#xff0c;其它为ipv6和ipv4双连接 sw1 ipv6 interface Vlanif1 ipv6 enable ip address 10.0.11.1 255.255.255.0 ipv6 address 2001:DB8:11::1/64 interface MEth0/0/1 inter…

OpenHarmony - 基于ArkUI框架实现日历应用

前言 对于刚刚接触OpenHarmony应用开发的开发者&#xff0c;最快的入门方式就是开发一个简单的应用&#xff0c;下面记录了一个日历应用的开发过程&#xff0c;通过日历应用的开发&#xff0c;来熟悉基本图形的绘制&#xff0c;ArkUI的组件的使用&#xff0c;UI组件生命周期&a…

ES6(一部分)未完...

文章目录 ES61.ES6 let声明变量2.ES6 const声明常量3.变量解构赋值3-1解构对象3-2解构数组3-3字符串解构 4.模板字符串5.字符串扩展5-1 include函数5-2 repeat函数&#xff08;重复&#xff09; 6.数值扩展6-1二进制和八进制表示法6-2isFinite 与 isNaN方法6-3islnteger方法6-4…

泽攸科技ZEM20台式扫描电镜低真空下的应用案例

低真空扫描电子显微镜是显微技术领域的重要分支&#xff0c;与传统的高真空扫描电子显微镜相比&#xff0c;低真空电镜对含水、多孔、不耐电子束烧伤和不适合喷金处理的样品进行直接观测并具有更好的效果&#xff0c;对于生物样品而言低真空电镜比高真空电镜更具有优势&#xf…

【sklearn练习】preprocessing的使用

介绍 scikit-learn 中的 preprocessing 模块提供了多种数据预处理工具&#xff0c;用于准备和转换数据以供机器学习模型使用。这些工具可以帮助您处理数据中的缺失值、标准化特征、编码分类变量、降维等。以下是一些常见的 preprocessing 模块中的功能和用法示例&#xff1a; …

Mac/Linux虚拟机CrossOver2024新版下载使用教程

CrossOver不像Parallels或VMware的模拟器&#xff0c;而是实实在在Mac OS X系统上运行的一个软件&#xff0c;该软件可以让用户在mac是上直接运行windows软件&#xff0c;本文为大家带来的是CrossOver Mac版安装教程&#xff01; CrossOver Mac-安装包下载如下&#xff1a;http…

【鸿蒙4.0】harmonyos Day 03

一.ArkUI组件-Text 1.Text:文本显示组件 语法&#xff1a;Text(content?:string|Resource) string格式&#xff0c;直接填写文本内容 Text(我是bug天选之子) Resource格式&#xff0c;读取本地资源文件 Text($r(app.string.width_label)) "app.string.width_label&q…