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 DockerfileFROM 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 以及可以看到我们自己构建的镜像

 

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络编程 - - TCP套接字通信及编程实现

概述 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。在网络编程中,TCP常用于实现客户端和服务器之间的可靠数据传输。本文将基于C语言实现TCP服务端和客户端建立通信的过程。 三次握手 在…

近红外简单ROI分析matlab(NIRS_SPM)

本次笔记主要想验证上篇近红外分析是否正确,因为叠加平均有不同的计算方法,一种是直接将每个通道的5分钟实时长单独进行叠加平均,另一种是将通道划分为1分钟的片段,将感兴趣的通道数据进行对应叠加平均,得到一个总平均…

从玩具到工业控制--51单片机的跨界传奇【2】

咱们在上一篇博客里面讲解了什么是单片机《单片机入门》,让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识,顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话,可以看看博主的C语言专栏哟&#xff…

Python调用go语言编译的库

要在 Python 中调用用 Go 语言编写的库,可以使用 Go 语言的 cgo 特性将 Go 代码编译成共享库(如 .so 文件),然后在 Python 中通过 ctypes 或 cffi 模块加载和调用这个共享库。 新建main.go文件,使用go语言编写如下代码…

学成在线_内容管理模块_创建模块工程

学成在线模块工程 1.各个微服务依赖基础工程2.每个微服务都是一个前后端分离的项目3.xuecheng-plus-content:内容管理模块工程xuecheng-plus-content-modelxuecheng-plus-content-servicexuecheng-plus-content-api 1.各个微服务依赖基础工程 2.每个微服务都是一个前…

1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)

目录 01. Java中的集合体系 02. 单列集合体系​ 1. Collection系列集合的遍历方式 (1)迭代器遍历(2)增强for遍历​编辑(3)Lambda表达式遍历 03.List集合详解 04.Set集合详解 05.总结 Collection系列…

智能科技与共情能力加持,哈曼重新定义驾乘体验

2025年1月6日,拉斯维加斯,2025年国际消费电子展——想象一下,当您步入一辆汽车,它不仅能响应您的指令,更能理解您的需求、适应您的偏好,并为您创造一个独特且专属的交互环境。作为汽车科技领域的知名企业和…

Unity中实现倒计时结束后干一些事情

问题描述:如果我们想实现在一个倒计时结束后可以执行某个方法,比如挑战成功或者挑战失败,或者其他什么的比如生成boss之类的功能,而且你又不想每次都把代码复制一遍,那么就可以用下面这种方法。 结构 实现步骤 创建一…

从0开始学习搭网站第二天

前言:今天比较惭愧,中午打铲吃了一把,看着也到钻二了,干脆顺手把这个赛季的大师上了,于是乎一直到网上才开始工作,同样,今天的学习内容大多来自mdn社区mdn 目录 怎么把文件上传到web服务器采用S…

STM32 FreeRTOS时间片调度---FreeRTOS任务相关API函数---FreeRTOS时间管理

目录 时间片调度简介 FreeRTOS任务相关API函数介绍 延时函数介绍 时间片调度简介 在FreeRTOS中,同等优先级的任务会轮流分享相同的CPU时间,这个时间被称为时间片。在这里,一个时间片的长度等同于SysTick中断的周期。 FreeRTOS任务相关API…

VM(虚拟机)和Linux的安装

文章目录 1.虚拟机1.1 VM的安装和删除1.1.1 安装前提1.1.2 安装步骤 1.2 虚拟机快照1.3 虚拟机的克隆 2.Linux的安装2.1 CentOS2.2 Ubuntu 1.虚拟机 (1)Linux系统的安装方式 ①物理机安装:直接将操作系统安装到服务器硬件上 ②虚拟机安装&am…

C++算法第十五天

复习周终于结束了,这也是复习周结束后的第一篇文章,请各位小伙伴们细细品尝,废话不多说,我们开始今天的讲解。 第一题 题目链接 918. 环形子数组的最大和 - 力扣(LeetCode) 题目解析 代码原理 注意&…

mysql-5.7.18保姆级详细安装教程

本文主要讲解如何安装mysql-5.7.18数据库: 将绿色版安装包mysql-5.7.18-winx64解压后目录中内容如下图,该例是安装在D盘根目录。 在mysql安装目录中新建my.ini文件,文件内容及各配置项内容如下图,需要先将配置项【skip-grant-tab…

<OS 有关>Ubuntu 24 安装 openssh-server, tailscale+ssh 慢增加

更新日志: Created on 14Jan.2025 by Dave , added openssh-server, tailescape Updated on 15Jan.2025, added "tailescape - tailscape ssh" 前期准备: 1. 更新可用软件包的数据库 2. 升级系统中所有已安装的软件包到最新版本 3. 安装 cur…

STM32-keil安装时遇到的一些问题以及解决方案

前言: 本人项目需要使用到STM32,故需配置keil 5,在配置时遇到了以下问题,并找到相应的解决方案,希望能够为遇到相同问题的道友提供一些解决思路 1、提示缺少(missing)version 5编译器 step1:找…

HTTP1.0/1.1/2.0/3.0 的区别?

HTTP(Hypertext Transfer Protocol)是用于传输超文本的协议。各版本的主要区别体现在性能优化、数据传输方式以及支持的功能上。 每一次协议的更新都是对旧协议的改进: 1. HTTP1.0 发布于1996年 无连接(Connectionless&#…

蓝桥杯_B组_省赛_2022(用作博主自己学习)

题目链接算法11.九进制转十进制 - 蓝桥云课 进制转换 21.顺子日期 - 蓝桥云课 时间与日期 31.刷题统计 - 蓝桥云课 时间与日期 41.修剪灌木 - 蓝桥云课 思维 51.X 进制减法 - 蓝桥云课 贪心 61.统计子矩阵 - 蓝桥云课 二维前缀和 71.积木画 - 蓝桥云课 动态规划 82.扫雷 - 蓝桥…

C++|CRC校验总结

参考: Vector - CAPL - CRC算法介绍 开发工具 > CRC校验工具 文章目录 简介CRC-8CRC-16CRC-32 简介 循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种数据校验算法,广泛用于检测数据传输或存储过程中的错误。…

迅翼SwiftWing | ROS 固定翼开源仿真平台正式发布!

经过前期内测调试,ROS固定翼开源仿真平台今日正式上线!现平台除适配PX4ROS环境外,也已实现APROS环境下的单机飞行控制仿真适配。欢迎大家通过文末链接查看项目地址以及具体使用手册。 1 平台简介 ROS固定翼仿真平台旨在实现固定翼无人机决策…

C语言数据结构与算法(排序)详细版

大家好,欢迎来到“干货”小仓库!! 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!无人扶我青云志,我自踏雪至山巅!!&am…