【docker】docker 关键技术 —— 镜像制作

news/2025/1/15 16:07:59/

docker 镜像制作

  • 镜像制作及原因
  • Docker 镜像制作方式
  • 快照方式制作镜像
    • 制作命令
  • Dockerfile 制作镜像
    • Dockerfile 是什么
    • Dockerfile 格式
    • 为什么需要 Dockerfile
    • gitee 详细使用 Dockerfile 教程

镜像制作及原因

镜像制作是因为某种需求,官方的镜像无法满足需求,需要我们通过一定手段来自定义镜像来满足要求。

制作镜像往往因为以下原因

  1. 编写的代码如何打包到镜像中直接跟随镜像发布
  2. 第三方制作的内容安全性未知,如含有安全漏洞
  3. 特定的需求或者功能无法满足,如需要给数据库添加审计功能
  4. 公司内部要求基于公司内部的系统制作镜像,如公司内部要求使用自己的操作系统作为基础镜像

Docker 镜像制作方式

制作容器镜像,主要有两种方法:

  • 制作快照方式获得镜像(偶尔制作的镜像):在基础镜像上(比如 Ubuntu),先登录容器中,然后安装镜像需要的所有软件,最后整体制作快照。
  • Dockerfile 方式构建镜像(经常更新的镜像):将软件安装的流程写成 Dockerfile,使用 docker build 构建成容器镜像。

快照方式制作镜像

制作命令

docker commit

• 功能

容器创建一个新的镜像。

在这里插入图片描述

Dockerfile 制作镜像

Dockerfile 是什么

镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,这个脚本就是 Dockerfile。

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

Dockerfile 格式

在这里插入图片描述
该指令不区分大小写。然而,约定是它们是大写的,以便更容易地将它们与参数区分开来。

Docker 按顺序运行指令 Dockerfile

Docker 将以开头的行视为#注释,行中其他任何地方的标记#都被视为参数。这允许像这样的语句:

在这里插入图片描述

为什么需要 Dockerfile

  • 可以按照需求自定义镜像
    • docker commit 一样能够自定义镜像,官方的镜像可以说很少能直接满足我们应用的,都需要我们自己打包自己的代码进去然后做成对应的应用镜像对外使用。
  • 很方便的自动化构建,重复执行
    • 通过 dockerfile 可以自动化的完成镜像构建,而不是像 docker commit 一样,手动一个命令一个命令执行,而且可以重复执行,docker commit 的话很容易忘记执行了哪个命令,哪个命令没有执行。
  • 维护修改方便,不再是黑箱操作
    • 使用 docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑箱镜像,dockerfile 很容易二次开发。
  • 更加标准化,体积可以做的更小
    • docker 容器启动后,系统运行会生成很多运行时的文件,如果使用 commit 会导致这些文件也存储到镜像里面,而且 commit 的时候安装了很多的依赖文件,没有有效的清理机制的话会导致镜像非常的臃肿。使用 Dockerfile 则会更加标准化,而且提供多级构建,将编译和构建分开,不会有运行时的多余文件,更加的标准化。

gitee 详细使用 Dockerfile 教程

gitee 详细使用 Dockerfile 教程


http://www.ppmy.cn/news/1526195.html

相关文章

【网盘外快】百度网盘SVIP充值使用说明,如何通过软件自动充值获取新用户优惠?这篇文章给你正确答案。

资源地址: 此软件需要 网盘ck 才可以使用。 雷电模拟器下载地址:https://www.ldmnq.com/ 软件下载地址:https://wwi.lanzoup.com/b01qdiavzg 密码:666 模拟器使用说明: 1、调整模拟器分辨率调整为:540 X 960。 2、…

【数据结构与算法 | 每日一题 | 力扣篇】力扣1184

1. 力扣1184:公交站间的距离 1.1 题目: 环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车…

后端入门 (JQuery基础) 01

引入jQuery资源&#xff08;https://cdn.staticfile.net/jquery/1.10.2/jquery.min.js&#xff09; <script src"jquery.js"></script> <!-- 引入jQuery资源 --> 绑定事件的方式&#xff1a; 1. 直接使用事件函数 $("p").click(func…

【智路】智路OS Airos Edge 2.0 Quick Start

Airos Edge 2.0 Quick Start 1 智路OS2.0 1.1 简介 智路OS路侧操作系统airos-edge自下而上分别由内核层&#xff0c;硬件抽象层、框架层、服务层和应用层构成&#xff1b;提供了一系列抽象和框架&#xff0c;支持设备接入、服务、应用等组件开发&#xff0c;兼容X86和ARM操作…

TCP和MQTT通信协议

协议分层 网络分层 协议应用层 Co AP MQTT HTTP传输层 UDP TCP网络层 IP链路层 Enternet 网络分层中最…

在Ubuntu上部署 Misskey 服务器

今天我在阿贝云的免费服务器上进行了一次有趣的部署测试。阿贝云的服务真是让人惊喜&#xff0c;尤其是它的免费云服务器&#xff0c;提供的1核CPU、1G内存、10G硬盘和5M带宽的配置&#xff0c;绝对是个不错的免费服务器&#xff01;这样的环境适合开发和学习&#xff0c;给我带…

十四,在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明

十四&#xff0c;在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明 文章目录 十四&#xff0c;在Spring Boot当中对应“ Tomcat 服务器的相关配置”和“服务器的切换”的详细说明1. 基本介绍2. 准备工作&#xff1a;3. 内置 Tomcat 的配置3.1 第…

uniapp升级Vue3:避坑指南与步骤详解

为什么要升级到 Vue3 Vue3 是 Vue.js 的最新版本&#xff0c;相比 Vue2&#xff0c;它带来了许多改进和新特性&#xff0c;比如更小的包体积、更好的性能、更强大的组合式 API 等。通过升级到 Vue3&#xff0c;我们可以享受到这些新特性带来的好处&#xff0c;提升项目的开发效…