制作一个不依赖任何基础镜像的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行语句
-
FROM scratch
此镜像是从白手起家,从 0 开始构建。 -
COPY hello /
将文件“hello”复制到镜像的根目录。 -
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(HyperText Transfer Protocol,超文本传输协议)是用于在万维网(World Wide Web)上传输超文本的基础协议。它定义了客户端(通常是浏览器)和服务器之间的文本数据传输格式和规则。以下是HTTP的…...
共享`pexlinux`数据文件的网络服务
实验环境准备: 1.红帽7主机 2.要全图形安装 3.配置网络为手动,配置网络可用 4.关闭vmware DHCP功能 一、kickstart自动安装脚本制作 1.安装图形化生成kickstart自动脚本安装工具 2.启动图形制作工具 3.图形配置脚本 这里使用的共享方式是http࿰…...
HC32F4A0 10路串口UART 配置
HC32 小华MCU 使用一段时间了,反正芯片BUG 是比较多了,比如串口接收错误后导致再也无法接收,PWM模块无法输出 低电平 , CAN 接收错误导致 输出引脚 CAN_TXD 一直输出脉冲 。。。;好的一面也存在吧,IO 引脚…...
拯救PyCharm:击退IDE崩溃的终极策略
拯救PyCharm:击退IDE崩溃的终极策略 PyCharm,作为开发界的明星IDE之一,以其强大的功能和灵活的定制性深受广大开发者喜爱。然而,即便是这样一款卓越的开发工具,也可能会遇到崩溃的问题,影响开发效率和工作…...
深入解析Unix命令:掌握wc、whereis和which的使用技巧
目录 1. wc命令 2. whereis命令 3. which命令 结论 在Unix和类Unix系统中,wc、whereis和which是三个常用的命令行工具,每个都有着独特的功能和用途。让我们逐个来了解它们的作用和使用方法。 1. wc命令 wc命令是"word count"的缩写&…...
奥运会大规模使用中国AI大模型!
B站:啥都会一点的研究生公众号:啥都会一点的研究生 AI圈最近又发生了啥新鲜事? 巴黎奥运会大规模使用中国 AI 大模型 巴黎奥运会成为一场科技与体育的盛宴,其中包括了大量中国科技的应用。AI 技术将在多个方面发挥作用…...
Linux中的线程3
死锁 在Linux操作系统中,死锁(Deadlock)是指两个或多个进程(或线程)在执行过程中,因互相持有对方所需的资源而又都在等待对方释放资源,导致它们都无法继续执行下去的一种状态。这种僵局会浪费系…...
内网权限维持——利用WMI进行权限维持
文章目录 一、WMI事件订阅机制简介二、利用事件订阅进行权限维持三、防御方式 一、WMI事件订阅机制简介 WMI(Windows Management Instrumentation,Windows管理规范)是windows提供的一种能够直接与系统进行交互的机制,旨在为系统中…...
【数据结构算法经典题目刨析(c语言)】括号匹配问题(图文详解)
💓 博客主页:C-SDN花园GGbond ⏩ 文章专栏:数据结构经典题目刨析(c语言) 目录 一、题目描述 二、解题思路 三、代码实现 一、题目描述 二、解题思路 问题要求将三种类型括号匹配,其中包括顺序匹配和数量匹配 使用栈的后进先…...
浅谈 Spring AOP框架 (1)
文章目录 一、什么是 Spring AOP二、为什么要使用 Spring AOP三、AOP 的一些应用场景四、AOP 的组成五、如何使用 Spring AOP六、Spring AOP 的实现原理6.1、JDK 和 CGLIB 的区别 一、什么是 Spring AOP AOP (Aspect Oriented Programming) :面向切面编程ÿ…...
Linux 面试准备 - 2024
复习一下,资料来自慕课网课程 Linux 速成班和一些网上面试资料。 1. Linux 内核功能 1. 内存管理 2. 进程管理 3. 设备驱动程序 4. 系统调用和安全防护 2. 文件系统 - 一切皆文件 2.1 文件目录 /根目录etc配置文件bin必要命令usr 二级目录(非用户…...
C++笔记---类和对象(中)
1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,分别为:构造函数,析构函数,拷贝构…...
【C++】入门基础知识
河流之所以能够到达目的地,是因为它懂得怎样避开障碍。💓💓💓 目录 ✨说在前面 🍋知识点一:C的发展历史 • 🌰1.C发展历史 • 🌰2.C的迭代与更新 • 🌰3.编程语言排…...
AI的应用场景和未来展望
AI(人工智能)的应用场景广泛且多样,已经深入到我们生活的方方面面,成为现代社会不可或缺的一部分。 AI的应用场景 1、通用软件与工具型应用 办公软件:如钉钉、飞书等,通过AI技术提供内容生成与摘要、智能…...
vim、sublime、notepad文本编辑器的使用
VIM: Windows上配置gvim并作为C和C的IDE Windows上配置gvim并作为C和C的IDE | Reasuon sublime notepad...
PyCharm中的外部更改识别:终极解决方案指南
标题:PyCharm中的外部更改识别:终极解决方案指南 引言 PyCharm,作为JetBrains公司开发的集成开发环境(IDE),以其强大的功能和高效的代码编辑体验而广受开发者喜爱。然而,在开发过程中…...
Qt——QTCreater ui界面如何统一设置字体
第一步:来到 ui 设计界面,鼠标右键点击 改变样式表 第二步:选择添加字体 第三步:选择字体样式和大小,点击 ok 第四步:点击ok或apply,完成设置...
Linux驱动入门实验班day03-GPIO子系统概述
3.通用框架1——最简单方式1:执行命令cat /sys/kernel/debug/gpio查看串口信息 gpio4对应的下列 方式2: 对于按键GPIO4_14:对应第四组第14个引脚 gpiochip3 ,从96开始, 9614110;...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
