0

0

Docker镜像讲解

星夢妙者

星夢妙者

发布时间:2025-06-27 12:18:23

|

1070人浏览过

|

来源于php中文网

原创

阅读量: 483

Docker镜像是一种轻量级、可执行的独立软件包,用于打包软件运行环境及基于此环境开发的软件。它包含了软件运行所需的所有内容,包括代码、库、环境变量、配置文件和运行时环境等。所有的应用程序都可以直接打包成Docker镜像,然后通过镜像创建容器并运行。

如何获取镜像:

你可以从远程仓库(如docker hub或阿里云镜像仓库)下载镜像,也可以由朋友拷贝给你,或者自己通过Dockerfile制作一个镜像。还可以通过对已有镜像的容器进行修改(或不修改),然后使用Commit命令提交一个新的镜像。

Docker镜像加载原理:

Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统称为UnionFS。bootfs(boot file system)主要包含bootloader和kernel,其中bootloader用于引导加载kernel。Linux启动时会加载bootfs文件系统,这是在Docker镜像的最底层。这一层与典型的Linux/Unix系统类似,包含boot加载器和内核。当boot加载完成后,整个内核会在内存中运行,此时内存的控制权从bootfs转移到内核,系统也会卸载bootfs。

rootfs(root file system)位于bootfs之上,包含典型Linux系统中的标准目录和文件,如/dev, /proc, /bin, /etc等。rootfs代表了各种不同的操作系统发行版,例如Ubuntu和Centos等。

Docker镜像讲解第一张图展示了仅包含bootfs和rootfs的基础镜像。如果要创建一个emacs环境的镜像,就在这个基础上添加一层emacs镜像,如图二所示。如果再添加一个Apache环境,就在图二的基础上再加一层apache镜像,如图三所示。图中每一层镜像都可以被复用。

对于一个精简的操作系统,rootfs可以很小,只需要包含最基本的命令、工具和程序库,因为它可以直接使用宿主机的kernel,只需提供rootfs即可。因此,不同的Linux发行版虽然bootfs基本一致,但rootfs会有差异,所以不同的发行版可以共享bootfs。

分层下载的理解:

当我们下载一个镜像时,可以观察到它是一层层下载的,而且对于已经重复的文件,不会再次下载。

Docker镜像讲解思考:为什么Docker要采用分层下载的方式呢?

所有Docker镜像都从一个基础镜像层开始。当进行修改或添加新内容时,会在当前镜像层之上创建新的镜像层。

举个简单的例子,假设基于Ubuntu Linux 16.04创建一个新镜像,这就是新镜像的第一层;如果在该镜像中添加Python包,就会基于基础镜像层创建第二个镜像层;如果继续添加一个安全补丁,就会创建第三个镜像层。

Movio
Movio

AI真人出镜视频讲解

下载

当前镜像已经包含三个镜像层,如下图所示(这只是一个用于演示的简单例子)。

Docker镜像讲解在添加额外镜像层的同时,镜像始终保持为当前所有镜像层的组合,理解这一点非常重要。下图中展示了一个简单的例子,每个镜像层包含三个文件,而整体的大镜像包含了来自两个镜像层的六个文件。

Docker镜像讲解上图中的镜像层与之前的图略有不同,主要是为了便于展示文件。

下图展示了一个稍微复杂的三层镜像,从外部来看,整个镜像只有六个文件,因为最上层的文件7是文件5的一个更新版本。

Docker镜像讲解在这种情况下,上层镜像层的文件会覆盖底层镜像层的文件。这样,文件的更新版本作为一个新镜像层添加到镜像中。

Docker通过存储引擎(新版本采用快照机制)来实现镜像层堆栈,并确保多镜像层对外展示为一个统一的文件系统。

在Linux上可用的存储引擎包括AUFS、Overlay2、Device Mapper、Btrfs以及ZFS。每种存储引擎都基于Linux中对应的文件系统或块设备技术,并且每种都有其独特的性能特点。

Docker在Windows上仅支持windowsfilter一种存储引擎,该引擎基于NTFS文件系统之上实现了分层和CoW(Copy-on-Write)。

特点:

Docker镜像都是只读的。当用镜像创建容器并启动时,实际上是在原镜像之上新建了一层可写层,这层称为容器层,容器层之下的称为镜像层。

Docker镜像讲解Docker镜像讲解commit镜像:

commit命令用于从容器创建一个新的镜像,其具体操作命令如下:

docker commit 提交容器成为一个镜像
docker commit -a="作者名" -m="提交的描述信息" 容器id 镜像名称[:tag]

更多关于commit操作的攻略

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

435

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

435

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

435

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1431

2023.07.26

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1164

2023.07.27

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

23

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 12.8万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2.1万人学习

Node.js-前端工程化必学
Node.js-前端工程化必学

共19课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号