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

jingxiang制作

文章目录

  • jingxiang制作
    • 为什么需要jingxiang制作
    • 如何进行jingxiang制作
  • 快照方式制作jingxiang
    • 制作命令
      • `do cker` commit
  • 快照制作jingxiang
    • 创建临时工作目录
    • 编写一个实例代码
    • 启动一个容器
    • 替换国内软件源
    • 安装编译软件
    • 源代码拷贝到容器中
    • 编译运行
    • 提交为一个jingxiang
    • 测试是否可以正常运行
  • `do cker file`jingxiang制作
    • 什么是`do cker file`
    • 为什么需要`do cker file`
    • 如何进行`do cker file`编写
  • jingxiang制作常见问题整理
    • 1. `ADD` 与 `COPY` 的区别
    • 2. `CMD` 与 `ENTRYPOINT` 的区别
    • 3. 如何使用多个 `FROM` 指令
    • 4. 快照与使用 ``do cker file`` 制作jingxiang的区别
    • 5. 什么是空悬jingxiang(Dangling Images)
    • 6. 中间层jingxiang的概念

jingxiang制作

为什么需要jingxiang制作

在一些特定的环境下,官方的jingxiang无法满足要求,因此就需要使用一定手段来自定义jingxiang来满足要求,通常情况下,可能会有下面的原因导致需要jingxiang:

  1. 编写的代码要打包到jingxiang中直接跟随jingxiang发布
  2. 第三方制作的内容安全性未知,可能有安全问题
  3. 特定的需求或者功能不能满足

如何进行jingxiang制作

制作容器jingxiang,主要有两种方式:

  1. 制作快照方式获得jingxiang,在基础jingxiang上,先登录容器中,安装jingxiang需要的所有软件,再制作快照
  2. do cker file的方式进行构建jingxiang,这种通常是经常更新的jingxiang,把软件安装的流程写成do cker file,使用do cker build构建容器jingxiang

快照方式制作jingxiang

制作命令

do cker commit

功能:从容器中创建一个新的jingxiang

常见的参数有,-a表示jingxiang作者,-c表示使用do cker file指令来创建jingxiang,可以修改启动指令,-m表示提交时的说明文字,-p表示在commit的过程中把容器暂停

比如:

`do cker` commit xxxx zbh/mynginx:v01

快照制作jingxiang

创建临时工作目录

root@VM-24-7-ubuntu:/data/myworkdir/compose/base# cd ~
root@VM-24-7-ubuntu:~# mkdir -p /data/zbh/commitimage
root@VM-24-7-ubuntu:~# cd /data/zbh/commitimage/

编写一个实例代码

root@VM-24-7-ubuntu:/data/zbh/commitimage# cat demo.cc 
#include <iostream>
using namespace std;int main()
{cout << "hello `do cker` commitimage" << endl;return 0;
}

启动一个容器

root@VM-24-7-ubuntu:/data/zbh/commitimage# `do cker` container run -it --name mycppcommit centos:7 bash
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7

替换国内软件源

[root@bd60ae387a04 /]# sed -i.bak \
>     -e 's|^mirrorlist=|#mirrorlist=|g' \
>     -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
>     /etc/yum.repos.d/CentOS-Base.repo
[root@bd60ae387a04 /]# yum makecache
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
base                                                                                   | 3.6 kB  00:00:00     
extras                                                                                 | 2.9 kB  00:00:00     
updates                                                                                | 2.9 kB  00:00:00     
(1/10): base/7/x86_64/group_gz                                                         | 153 kB  00:00:00     
(2/10): base/7/x86_64/filelists_db                                                     | 7.2 MB  00:00:00     
(3/10): base/7/x86_64/primary_db                                                       | 6.1 MB  00:00:00     
(4/10): base/7/x86_64/other_db                                                         | 2.6 MB  00:00:00     
(5/10): extras/7/x86_64/primary_db                                                     | 253 kB  00:00:00     
(6/10): extras/7/x86_64/filelists_db                                                   | 305 kB  00:00:00     
(7/10): extras/7/x86_64/other_db                                                       | 154 kB  00:00:00     
(8/10): updates/7/x86_64/primary_db                                                    |  27 MB  00:00:01     
(9/10): updates/7/x86_64/other_db                                                      | 1.6 MB  00:00:00     
(10/10): updates/7/x86_64/filelists_db                                                 |  15 MB  00:00:02     
Metadata Cache Created

安装编译软件

这个直接安装就可以了:

yum install -y gcc

源代码拷贝到容器中

root@VM-24-7-ubuntu:/data/zbh/commitimage# `do cker` cp ./demo.cc mycppcommit:/src
Successfully copied 2.05kB to mycppcommit:/src

编译运行

[root@bd60ae387a04 src]# g++ demo.cc -o demo
[root@bd60ae387a04 src]# ./demo 
hello `do cker` commitimage

提交为一个jingxiang

root@VM-24-7-ubuntu:/data/zbh/commitimage# `do cker` commit mycppcommit mycppimg:v1.0
sha256:c92a4ac1b0feb0aaeb9086889511f1b77321b2eb843b8a2e56914b5c28d56c25

测试是否可以正常运行

root@VM-24-7-ubuntu:/data/zbh/commitimage# `do cker` run -it mycppimg:v1.0 ./src/demo
hello `do cker` commitimage

do cker filejingxiang制作

什么是do cker file

jingxiang的定制实际上就是定制每一层所添加的配置,文件,如果把每一层修改,安装,构建,操作的命令写到一个脚本里面,然后用这个脚本来进行构建,定制jingxiang,这个脚本就是所谓的do cker file

do cker file整体上来说就是一个文本文件,在它内部包含了一个一个的指令,每一个指令都会构建一层,其实就是前面执行的哪一个一个的代码

当写好了一份do cker file后,do cker会按照顺序依次执行do cker file中的内容

为什么需要do cker file

对于do cker file来说,其实在最开始的介绍中已经说过了,适合进行频繁更新的场景,这里再展开进行介绍:

  1. 可以按照需求进行自定义jingxiang
  2. 方便进行自动化构建,重复执行
  3. 维护修改比较方便
  4. 更加标准化

如何进行do cker file编写

这里对于do cker file的规则就不多进行列举了,直接用实例来进行演示,会在do cker file后附带有对应的解释规则

jingxiang制作常见问题整理

1. ADDCOPY 的区别

  • ADD:

    • 功能更强大,能从构建主机的本地文件系统或远程 URL 复制文件/目录到jingxiang文件系统。
    • 支持自动解压特定类型的压缩文件。
    • 相较于 COPY,它更灵活,但使用时需注意其额外功能可能带来的复杂性。
  • COPY:

    • 仅用于从构建主机本地文件系统复制文件/目录到jingxiang。
    • 当只需简单拷贝文件,特别是压缩包时,推荐使用 COPY

2. CMDENTRYPOINT 的区别

  • ENTRYPOINT:

    • 定义容器启动时运行的命令,且不可被 ``do cker run 的命令行参数覆盖,这些参数会作为 ENTRYPOINT 命令的参数。
    • do cker file 中只能有效指定一个 ENTRYPOINT(如果有多个,只有最后一个生效)。
    • 可与 CMD 结合使用,为 ENTRYPOINT 提供默认参数。
  • CMD:

    • 也定义容器启动命令或参数,但可被 ``do cker run 的命令行参数覆盖。
    • 如果同时存在 ENTRYPOINTCMDCMD 的值将作为 ENTRYPOINT 的默认参数。

3. 如何使用多个 FROM 指令

  • 多个 FROM 指令实现多阶段构建,每个阶段创建一个临时jingxiang,最终jingxiang基于最后一个 FROM 指令。
  • 允许在不同阶段分别处理编译、安装、清理等工作,然后仅将必要的文件从前一阶段复制到下一阶段,以减少最终jingxiang的大小。
  • 特别适用于分离编译环境和运行环境。

4. 快照与使用 do cker file 制作jingxiang的区别

  • do cker file 使用提供了标准化、可复现的jingxiang构建过程,允许通过脚本化的方式精确控制jingxiang每一层的内容和配置。
  • 快照更多指的是jingxiang构建过程中对文件系统的即时状态保存,而 do cker file 则是指导这一系列快照生成的具体指令集。

5. 什么是空悬jingxiang(Dangling Images)

  • 空悬jingxiang指的是仓库名和标签均为 <none> 的jingxiang,通常是因为更新或重建导致旧jingxiang被新的覆盖。
  • 可以通过 ``do cker image ls -f dangling=true 命令列出并安全删除,以释放空间。

6. 中间层jingxiang的概念

  • 中间层jingxiang是 do cker 构建过程中为了优化和复用资源而产生的。
  • 它们不会直接显示在默认的 do cker` image ls` 输出中,需使用 do cker image ls -a 查看所有(包括中间层)jingxiang。
  • 这些jingxiang是其他jingxiang的基础,不应随意删除,因为它们是依赖项,当依赖它们的jingxiang被删除时,这些中间层也会被自动清理。

相关文章:

jingxiang制作

文章目录 jingxiang制作为什么需要jingxiang制作如何进行jingxiang制作 快照方式制作jingxiang制作命令do cker commit 快照制作jingxiang创建临时工作目录编写一个实例代码启动一个容器替换国内软件源安装编译软件源代码拷贝到容器中编译运行提交为一个jingxiang测试是否可以正…...

【数据结构】线性表之《顺序表》超详细实现

顺序表 一.数据结构1.逻辑结构2.物理结构 二.顺序表的分类1.静态顺序表2.动态顺序表 三.顺序表的实现1.创建顺序表2.初始化顺序表3.判断是否扩容4.打印顺序表5.插入操作1.头插2.尾插3.按照下标插入 6.删除操作1.头删2.尾删3.按照下标删除 7.查找数据8.修改数据9.清空顺序表10.销…...

开源模型应用落地-音乐生成模型-suno/bark深度使用-AIGC应用探索(六)

一、前言 学习音乐生成模型具有极其重要的价值。通过对音乐生成模型的深入学习,我们能够探索到音乐创作的全新边界和可能性。它不仅可以开启一扇通往无限音乐创意的大门,让我们领略到科技与艺术完美融合所带来的震撼与惊喜,还能帮助我们在音乐领域实现前所未有的突破和创新。…...

为何选择Xinstall?告别邀请码,让App推广更便捷!

在互联网日益繁荣的今天&#xff0c;App的推广和运营成为了各大企业关注的重点。然而&#xff0c;传统的推广方式如邀请码限制&#xff0c;往往会给用户带来不便&#xff0c;同时也限制了App的快速增长。在这个背景下&#xff0c;Xinstall凭借其独特的功能和服务&#xff0c;成…...

JavaScript基础入门

目录 任务描述 相关知识 JavaScript语言简介 JavaScript注释 搭建JavaScript的运行环境 JavaScript输出 弹出对话框模式 控制台模式 页面输出模式 编程要求 任务描述 要了解一门编程语言&#xff0c;要从输出开始。 本关任务&#xff1a;采用相关知识中介绍的任意一…...

windows11子系统Ubuntu 22.04.4子安装图形化界面

1、windows11家庭版本设置 打开虚拟机安装许可 2、Microsoft Store下载安装ubuntu 我使用的是22.04.4 LTS版本 3、 打开ubuntu 命令窗口 1、打开win11的命令行&#xff0c;在下拉三角下标&#xff0c;打开&#xff0c;可以看到有Ubuntu 的选项&#xff0c;点击即可进入linux命…...

对 2024 年美赛选题的建议

对2024年美赛选题的建议包括&#xff1a; 1. 深入探讨当下全球面临的重大问题和挑战&#xff1a;鉴于美赛通常聚焦于全球性议题&#xff0c;如气候变化、可持续发展、数据分析等&#xff0c;参赛学生应关注这些议题&#xff0c;并深入研究相关数据与背景信息&#xff0c;以提出…...

PyTorch tutorials:快速学会使用PyTorch

准备深入学习transformer&#xff0c;并参考一些资料和论文实现一个大语言模型&#xff0c;顺便做一个教程&#xff0c;今天是番外篇&#xff0c;介绍下PyTorch&#xff0c;后面章节实现代码主要使用这个框架。 本系列禁止转载&#xff0c;主要是为了有不同见解的同学可以方便联…...

【CT】LeetCode手撕—手撕快排

目录 题目1-思路-快排1-1 快排的核心思想快速排序算法步骤优美的调整区间 1-2 ⭐快排的实现 2- 实现⭐912. 排序数组——题解思路 3- ACM 实现 题目 原题连接&#xff1a;912. 排序数组 1-思路-快排 1-1 快排的核心思想 选择一个基准 基准左侧的元素都小于该元素基准右侧的元…...

使用ARK工具ATool清除典型蠕虫MyDoom

1 概述 在长期的日常安全事件监测过程中&#xff0c;安天CERT经常捕获到大量的MyDoom蠕虫样本和传播该蠕虫的钓鱼邮件。受害主机感染MyDoom后会被放置后门&#xff0c;以便攻击者下发后续恶意软件&#xff0c;进行攻击或窃密等操作。MyDoom蠕虫最早发现于2004年&…...

在hue中使用ooize调度ssh任务无法执行成功,无法查看错误

ssh执行失败&#xff0c;但是hue没有给出明确的错误原因&#xff1a; 经过经验分析&#xff0c;原来是服务器上的sh文件用的是doc/window格式&#xff0c;需要使用notepad将格式改为unix之后就可以正常执行。 特此记录&#xff0c;避免遗忘知识点...

一套轻量、安全的问卷系统基座,提供面向个人和企业的一站式产品级解决方案

大家好&#xff0c;今天给大家分享的是一款轻量、安全的问卷系统基座。 XIAOJUSURVEY是一套轻量、安全的问卷系统基座&#xff0c;提供面向个人和企业的一站式产品级解决方案&#xff0c;快速满足各类线上调研场景。 内部系统已沉淀 40种题型&#xff0c;累积精选模板 100&a…...

3秒生成!这个AI模型画风也太治愈了,新手也能轻松驾驭

还在为不会画画而苦恼吗&#xff1f;别担心&#xff0c;今天给大家介绍一个超好用的AI模型——Soft and Squishy Linework&#xff0c;即使是小白也能轻松生成可爱的动漫图像&#xff01; Soft and Squishy Linework&#xff1a;专门生成柔和的、低保真&#xff08;lofi&#…...

数字人全拆解:如何构建一个基于大模型的实时对话3D数字人?

简单地说&#xff0c;数字人就是在数字世界的“人”。当前语境下我们谈到的数字人通常指的是借助AI技术驱动的虚拟世界人物&#xff0c;具备与真实人类相似甚至接近的外形、感知、交互与行为能力。 AI技术在智能数字人的应用中举足轻重&#xff0c;特别是随着大模型能力的涌现…...

实战 | 基于YOLOv10的车辆追踪与测速实战【附源码+步骤详解】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…...

2024北京智源大会

北京智源大会是年度国际性人工智能高端学术交流的盛会&#xff0c;定位于内行的AI盛会。智源大会紧密围绕当前人工智能学术领域迫切需要解决的问题&#xff0c;以及产业落地过程中存在的诸多挑战&#xff0c;开展深入探讨。智源研究院是2018年11月份成立的一家人工智能领域的新…...

youlai-boot项目的学习—本地数据库安装与配置

数据库脚本 在项目代码的路径下&#xff0c;有两个版本的mysql数据库脚本&#xff0c;使用对应的脚本就安装对应的数据库版本&#xff0c;本文件选择了5 数据库安装 这里在iterm2下使用homebrew安装mysql5 brew install mysql5.7注&#xff1a;记得配置端终下的科学上网&a…...

Android平台如何实现多路低延迟RTSP|RTMP播放?

技术背景 实际上&#xff0c;我们在2015年做Android平台RTSP、RTMP播放模块的时候&#xff0c;第一版就支持了多实例播放&#xff0c;因为SDK设计比较灵活&#xff0c;做个简单的player实例封装即可实现多实例播放&#xff08;Android Unity的就有多路demo&#xff09;&#x…...

深入探索Java开发世界:Java基础~类型分析大揭秘

文章目录 一、基本数据类型二、封装类型三、类型转换四、集合类型五、并发类型 Java基础知识&#xff0c;类型知识点梳理~ 一、基本数据类型 Java的基本数据类型是语言的基础&#xff0c;它们直接存储在栈内存中&#xff0c;具有固定的大小和不变的行为。 八种基本数据类型的具…...

短URL服务设计

引言 在营销系统里&#xff0c;为了增加系统的活跃用户数&#xff0c;经常会有各种各样的营销活动。这类活动几乎都是为了充分利用存量用户的价值&#xff0c;促使他们分享产品或App以达到触达到更多用户的目的。又或者是出于营销目的&#xff0c;群发优惠券触达短信这种场景。…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

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

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