Docker 镜像制作原理 做一个自己的docker镜像

一.手动制作镜像

  1. 启动容器
  2. 进入容器定制
  3. 基于容器生成镜像

1.启动容器

启动容器之前我们首先要有一个镜像,这个镜像可以是从docker拉取,例如:现在pull一个ubuntu镜像到本机。

docker pull ubuntu:22.04

 我们接下来可以基于这个容器进行容器定制。

2.进入容器定制

基于镜像启动容器,进入到容器进行定制:

docker run -it ubuntu:22.04 bash

更换一下国内的源,docker cp 可以把本机的源拷贝到容器,我这里直接用了容器的源。

安装一些定制容器所需要的包:

 apt -y install wget curl net-tools procps psmisc iputils-ping iproute2 vim tzdata tcpdump telnet traceroute tree iotop unzip zip nfs-common lrzsz && apt clean

3.基于容器生成镜像

包装完之后退出,可以基于这个容器生成一个镜像

docker commit xenodochial_chandrasekhar ubuntu:22.04-myself
docker images 此时可以看到自己做的镜像了

 基于自己做的镜像,创建容器,看看工具有没有

docker run -it 81924198f671

 可以看到工具是有的

二.批量制作镜像(docker file).

Alpine 是一个轻量级的 Linux 发行版,广泛用于容器化环境和嵌入式系统中。它以体积小、安全性高和运行效率高而闻名。

首先创建目录,在目录下创建dockerfile目录,这样层次分明一些

创建一个容器查看alpine ,以及更换镜像源,以及安装想要安装的工具(curl,vim,tree等) alpine 更新源使用的是apk update

root@zhangxin-virtual-machine:/data/dockerfile/base/alpine-myself# vim Dockerfile

FROM alpine:3.18.0
LABEL maintainer="zhangxin kk"
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/' /etc/apk/repositories &&  apk update && apk --no-cache add gcc curl wget iotop libgcc libc-dev libcurl libc-utils pcre-dev zlib-dev libnfs make pcre pcre2 zip unzip net-tools pstree libevent libevent-dev iproute2
docker build -t alpine-myself:3.18.0 .

 

构建成功  此时 docker images 以及可以看到我们自己构建的镜像

 

 运行我们构建的镜像: 可以看到刚才安装的工具已经都有了

 自己构建的镜像比原镜像大了不少:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序获取openid

2025年1月15日: 1、现在云服务器上安装nodejs,然后写个get接口: const express require(express); const app express();app.get(/getOpenid,(req,res)>{res.send("success"); })app.listen(3000,()>{console.log(server…

ASP.NET Core - 配置系统之配置添加

ASP.NET Core - 配置系统之配置添加 2. 配置添加 2. 配置添加 配置系统可以读取到配置文件中的信息,那必然有某个地方可以将配置文件添加到配置系统中。之前的文章中讲到 ASP.NET Core 入口文件中,builder(WebApplicationBuilder 对象) 中有一个 Config…

C#中通道(Channels)的应用之(生产者-消费者模式)

一.生产者-消费者模式概述 生产者-消费者模式是一种经典的设计模式,它将数据的生成(生产者)和处理(消费者)分离到不同的模块或线程中。这种模式的核心在于一个共享的缓冲区,生产者将数据放入缓冲区&#x…

ArcSegment绘制及计算

ArcSegment绘制及计算 给定起始点、终止点和 bulge 值计算弧线中心点和半径,绘制ArcSegment。 import math def calculate_arc_center_and_radius(x1, y1, x2, y2, bulge):angle4*math.atan(bulge)# 计算弦中点mid_x (x1 x2) / 2mid_y (y1 y2) / 2# 计算弦长的…

【高可用自动化体系】自动化体系

架构设计的愿景就是高可用、高性能、高扩展、高效率。为了实现架构设计四高愿景,需要实现自动化系统目标: 标准化。 流程自助化。 可视化:可观测系统各项指标、包括全链路跟踪。 自动化:ci/cd 自动化部署。 精细化&#xff1a…

FakeLocation 1599 | 内部旧版

前言:FakeLocation又更新了,在某安上面看见一些,大概问题就是地图没了,然后有更难搞了 任务一 我们先去看看地图是怎么个事情 这里用的是百度地图就没有了哈 高德地图是有的 任务二 null 选择成功了,虽然是null 任务三 地图位置 虽然不显示了…

初识算法和数据结构P1:保姆级图文详解

文章目录 前言1、算法例子1.1、查字典(二分查找算法)1.2、整理扑克(插入排序算法)1.3、货币找零(贪心算法) 2、算法与数据结构2.1、算法定义2.2、数据结构定义2.3、数据结构与算法的关系2.4、独立于编程语言…

2025年华数杯国际赛B题论文首发+代码开源 数据分享+代码运行教学

176项指标数据库 任意组合 千种组合方式 14页纯图 无水印可视化 63页无附录正文 3万字 1、为了方便大家阅读,全文使用中文进行描述,最终版本需自行翻译为英文。 2、文中图形、结论文字描述均为ai写作,可自行将自己的结果发给ai&#xff0c…

CSS的小知识

一、子选择器 (>) 让 CSS 样式只作用于子级和孙级元素,而不影响其他元素 有>是只对其子级有效,子选择器只会影响直接的子级元素,而不会影响更深层次的孙级元素 无>时是对子级、孙级、曾孙级等所有后代都有效

【经管数据】ZF数字采购采购明细数据(2015.3-2024.3)

一、数据来源: 原始数据来源为ZF采购网。数据涵盖了自2015年3月至2024年3月的ZF数字采购合同明细,反映了数字化转型在政府采购中的应用情况。 二、参考文献: [1] 申志轩, 祝树金, 文茜, 等. ZF数字采购与企业数字化转型[J]. 数量经济技术经济…

【Linux】Mysql部署步骤

一、JDK安装配置 在home目录下执行命令:mkdir Jdk 1.将JDK 上传至该文件夹,有些终端工具可以直接上传文件,比如:MobaXterm 可以看到安装包已经上传上来了 2.直接安装 命令:rpm -ivh jdk-8u311-linux-x64.rpm 3.安装成…

虚拟同步机(VSG)Matlab/Simulink仿真模型

虚拟同步机控制作为原先博文更新的重点内容,我将在原博客的基础上,再结合近几年的研究热点对其内容进行更新。Ps:VSG相关控制方向的simulink仿真模型基本上都搭建出来了,一些重要的控制算法也完成了实验验证。 现在搭建出来的虚拟…

二分查找算法——点名

一.题目描述 LCR 173. 点名 - 力扣(LeetCode) 二.题目解析 有0~n-1这n个数,但是数组中只有n-1个数,我们要找到消失的那个数。 三.算法原理 1.哈希表 我们先创建一个n个数的哈希表并初始化为0,然后将数组中的数存放…

FIDO2密码钥匙与无密码认证:打造安全便捷的数字世界

在数字化时代,密码曾被视为网络安全的基石,但随着网络攻击手段日益复杂,传统的密码认证方法越来越无法抵御这些挑战。对于用户来说,登录密码不仅繁琐易忘,而且一旦泄露,往往会导致数据泄露,造成…

Jmeter进行http接口并发测试

目录: 1、Jmeter设置(1)设置请求并发数(2)设置请求地址以及参数(3)添加结果数 2、启动看结果 1、Jmeter设置 (1)设置请求并发数 (2)设置请求地址…

osg中实现模型的大小、颜色、透明度的动态变化

以博饼状模型为对象,实现了模型大小、颜色、透明度的动态变化。 需要注意的是一点: // 创建材质对象osg::ref_ptr<osg::Material> material = new osg::Material;material->setDiffuse(osg::Material::FRONT_AND_BACK, osg::Vec4(0.0, 1.0, 0.0, 0.5));// 获取模型的…

VSCode使用纪要

1、常用快捷键 1&#xff09;注释 ctrl? 单行注释&#xff0c; altshifta 块注释&#xff0c; 个人测试&#xff0c;ctrl? 好像也能块注释 2&#xff09;开多个项目 可以先开一个新窗口&#xff0c;再新窗口打开另一个项目&#xff0c;这时就是同时打开多个项目了。 打开…

Jmeter 简单使用、生成测试报告(一)

一、下载Jmter 去官网下载&#xff0c;我下载的是apache-jmeter-5.6.3.zip&#xff0c;解压后就能用。 二、安装java环境 JMeter是基于Java开发的&#xff0c;运行JMeter需要Java环境。 1.下载JDK、安装Jdk 2.配置java环境变量 3.验证安装是否成功&#xff08;java -versio…

Linux 服务器挖矿木马防护实战:快速切断、清理与加固20250114

Linux 服务器挖矿木马防护实战&#xff1a;快速切断、清理与加固 引言 挖矿木马作为一种常见的恶意软件&#xff0c;对服务器资源和安全构成严重威胁。据安全机构统计&#xff0c;2023 年全球约 45%的 Linux 服务器遭受过挖矿木马攻击&#xff0c;平均每台被感染服务器每月造…

Linux Kernel 之十 详解 PREEMPT_RT、Xenomai 的架构、源码、构建及使用

概述 现在的 RTOS 基本可以分为 Linux 阵营和非 Linux 阵营这两大阵营。非 Linux 阵营的各大 RTOS 都是独立发展,使用上也相对独立;而 Linux 阵营则有多种不同的实现方法来改造 Linux 以实现实时性要求。本文我们重点关注 Linux 阵营的实时内核实现方法! 本文我们重点关注 …