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

制作一个不依赖任何基础镜像的docker镜像

1、比如官方提供的hello-world镜像

#docker pull hello-world

#docker images

hello-world   latest    feb5d9fea6a5   2 years ago   13.3kB

可以看到这个镜像只有13.3kB

2、# docker run hello-world

只能打印一些信息

3、这个hello-world镜像的dockerfile就下面3行语句

  1. FROM scratch
    此镜像是从白手起家,从 0 开始构建。

  2. COPY hello /
    将文件“hello”复制到镜像的根目录。

  3. CMD ["/hello"]
    容器启动时,执行 /hello

4、我们可以扩充一下这个hello-world程序的功能,让它变得更强大。

     扩充hello-world程序,还是要花费一些时间的,我们拷贝一个功能强大一些的程序吧,就用busybox了。

5、下载busybox

wget https://busybox.net/downloads/binaries/1.35.0-x86_64-linux-musl/busybox

这个程序只有1131168字节,即1.13MB

6、试用一下这个软件

#chmod +x busybox      ---先增加可执行权限

#./busybox   --打印这个程序的使用说明

#./busybox ls  --打印当前目录下的文件和目录清单, 就是自己实现了一个简化版的ls命令

#./busybox sleep 3600  --自己实现的sleep命令

#./busybox sh  --自己实现的sh shell

7、做一个自己的镜像吧

创建一个dockerfile文件

FROM scratch
COPY busybox / 
CMD ["/busybox"]

然后 docker build -t my:v1 ./

#docker images   ---看一下新作的这个镜像

REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
my        v1    3ba1a8427c3a   124 seconds ago   1.13MB

8、运行这个镜像

#docker run my:v1

可以看到 输出了 busybox的使用说明信息,但docker容器立刻结束了。

我们让它执行sleep命令,不要立即结束

# docker run my:v1  /busybox sleep 3600

这个shell阻塞了。

重新开一个shell,docker ps一下

# docker ps
CONTAINER ID   IMAGE          COMMAND                 CREATED          STATUS          PORTS     NAMES
9cc3dd651cf1   my:v1   "/busybox sleep 3600"   21 seconds ago   Up 21 seconds             cranky_black

登录到这个容器中

# docker exec -it 9cc3dd651cf1 /busybox sh

# ./busybox ls
busybox  dev      etc      proc     sys

# ./busybox ps
PID   USER     TIME  COMMAND
    1 0         0:00 /busybox sleep 3600
    7 0         0:00 /busybox sh
   14 0         0:00 ./busybox ps

相关文章:

制作一个不依赖任何基础镜像的docker镜像

1、比如官方提供的hello-world镜像 #docker pull hello-world #docker images hello-world latest feb5d9fea6a5 2 years ago 13.3kB 可以看到这个镜像只有13.3kB 2、# docker run hello-world 只能打印一些信息 3、这个hello-world镜像的dockerfile就下面3行语…...

【拓扑排序topsort】——启动!!!

B3644 【模板】拓扑排序 / 家谱树 #include<bits/stdc.h> #define int long long #define fi first #define se second #define pb push_back #define PII pair<int,int > #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) using namespace std; …...

计算机网络-http协议和https的加密原理

HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是用于在万维网&#xff08;World Wide Web&#xff09;上传输超文本的基础协议。它定义了客户端&#xff08;通常是浏览器&#xff09;和服务器之间的文本数据传输格式和规则。以下是HTTP的…...

共享`pexlinux`数据文件的网络服务

实验环境准备&#xff1a; 1.红帽7主机 2.要全图形安装 3.配置网络为手动&#xff0c;配置网络可用 4.关闭vmware DHCP功能 一、kickstart自动安装脚本制作 1.安装图形化生成kickstart自动脚本安装工具 2.启动图形制作工具 3.图形配置脚本 这里使用的共享方式是http&#xff0…...

HC32F4A0 10路串口UART 配置

HC32 小华MCU 使用一段时间了&#xff0c;反正芯片BUG 是比较多了&#xff0c;比如串口接收错误后导致再也无法接收&#xff0c;PWM模块无法输出 低电平 &#xff0c; CAN 接收错误导致 输出引脚 CAN_TXD 一直输出脉冲 。。。&#xff1b;好的一面也存在吧&#xff0c;IO 引脚…...

拯救PyCharm:击退IDE崩溃的终极策略

拯救PyCharm&#xff1a;击退IDE崩溃的终极策略 PyCharm&#xff0c;作为开发界的明星IDE之一&#xff0c;以其强大的功能和灵活的定制性深受广大开发者喜爱。然而&#xff0c;即便是这样一款卓越的开发工具&#xff0c;也可能会遇到崩溃的问题&#xff0c;影响开发效率和工作…...

深入解析Unix命令:掌握wc、whereis和which的使用技巧

目录 1. wc命令 2. whereis命令 3. which命令 结论 在Unix和类Unix系统中&#xff0c;wc、whereis和which是三个常用的命令行工具&#xff0c;每个都有着独特的功能和用途。让我们逐个来了解它们的作用和使用方法。 1. wc命令 wc命令是"word count"的缩写&…...

奥运会大规模使用中国AI大模型!

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 AI圈最近又发生了啥新鲜事&#xff1f; 巴黎奥运会大规模使用中国 AI 大模型 巴黎奥运会成为一场科技与体育的盛宴&#xff0c;其中包括了大量中国科技的应用。AI 技术将在多个方面发挥作用&#xf…...

Linux中的线程3

死锁 在Linux操作系统中&#xff0c;死锁&#xff08;Deadlock&#xff09;是指两个或多个进程&#xff08;或线程&#xff09;在执行过程中&#xff0c;因互相持有对方所需的资源而又都在等待对方释放资源&#xff0c;导致它们都无法继续执行下去的一种状态。这种僵局会浪费系…...

内网权限维持——利用WMI进行权限维持

文章目录 一、WMI事件订阅机制简介二、利用事件订阅进行权限维持三、防御方式 一、WMI事件订阅机制简介 WMI&#xff08;Windows Management Instrumentation&#xff0c;Windows管理规范&#xff09;是windows提供的一种能够直接与系统进行交互的机制&#xff0c;旨在为系统中…...

【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)

&#x1f493; 博客主页&#xff1a;C-SDN花园GGbond ⏩ 文章专栏&#xff1a;数据结构经典题目刨析(c语言) 目录 一、题目描述 二、解题思路 三、代码实现 一、题目描述 二、解题思路 问题要求将三种类型括号匹配&#xff0c;其中包括顺序匹配和数量匹配 使用栈的后进先…...

浅谈 Spring AOP框架 (1)

文章目录 一、什么是 Spring AOP二、为什么要使用 Spring AOP三、AOP 的一些应用场景四、AOP 的组成五、如何使用 Spring AOP六、Spring AOP 的实现原理6.1、JDK 和 CGLIB 的区别 一、什么是 Spring AOP AOP (Aspect Oriented Programming) &#xff1a;面向切面编程&#xff…...

Linux 面试准备 - 2024

复习一下&#xff0c;资料来自慕课网课程 Linux 速成班和一些网上面试资料。 1. Linux 内核功能 1. 内存管理 2. 进程管理 3. 设备驱动程序 4. 系统调用和安全防护 2. 文件系统 - 一切皆文件 2.1 文件目录 /根目录etc配置文件bin必要命令usr 二级目录&#xff08;非用户…...

C++笔记---类和对象(中)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。 一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;分别为&#xff1a;构造函数&#xff0c;析构函数&#xff0c;拷贝构…...

【C++】入门基础知识

河流之所以能够到达目的地&#xff0c;是因为它懂得怎样避开障碍。&#x1f493;&#x1f493;&#x1f493; 目录 ✨说在前面 &#x1f34b;知识点一&#xff1a;C的发展历史 • &#x1f330;1.C发展历史 • &#x1f330;2.C的迭代与更新 • &#x1f330;3.编程语言排…...

AI的应用场景和未来展望

AI&#xff08;人工智能&#xff09;的应用场景广泛且多样&#xff0c;已经深入到我们生活的方方面面&#xff0c;成为现代社会不可或缺的一部分。 AI的应用场景 1、通用软件与工具型应用 办公软件&#xff1a;如钉钉、飞书等&#xff0c;通过AI技术提供内容生成与摘要、智能…...

vim、sublime、notepad文本编辑器的使用

VIM&#xff1a; Windows上配置gvim并作为C和C的IDE Windows上配置gvim并作为C和C的IDE | Reasuon sublime notepad...

PyCharm中的外部更改识别:终极解决方案指南

标题&#xff1a;PyCharm中的外部更改识别&#xff1a;终极解决方案指南 引言 PyCharm&#xff0c;作为JetBrains公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;以其强大的功能和高效的代码编辑体验而广受开发者喜爱。然而&#xff0c;在开发过程中&#xf…...

Qt——QTCreater ui界面如何统一设置字体

第一步&#xff1a;来到 ui 设计界面&#xff0c;鼠标右键点击 改变样式表 第二步&#xff1a;选择添加字体 第三步&#xff1a;选择字体样式和大小&#xff0c;点击 ok 第四步&#xff1a;点击ok或apply&#xff0c;完成设置...

Linux驱动入门实验班day03-GPIO子系统概述

3.通用框架1——最简单方式1&#xff1a;执行命令cat /sys/kernel/debug/gpio查看串口信息 gpio4对应的下列 方式2&#xff1a; 对于按键GPIO4_14:对应第四组第14个引脚 gpiochip3 ,从96开始&#xff0c; 9614110&#xff1b;...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

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

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

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

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

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学

一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件&#xff0c;其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时&#xff0c;价带电子受激发跃迁至导带&#xff0c;形成电子-空穴对&#xff0c;导致材料电导率显著提升。…...