`

【Docker教程系列】Docker学习5-Docker镜像理解

阅读更多

通过前面几篇文章的学习,我们已经安装好了Docker,也学会使用一些常用的命令。比如启动命令、镜像命令、容器命令。常用命令分类后的第二个就是镜像命令。那么镜像是什么?拉取镜像的时候为什么是一层一层的?镜像加载的原理是什么?本篇,我们就来学学,Dokcer镜像的分层概念。

《Docker学习系列》教程已经发布的内容如下:

【图文教程】Windows11下安装Docker Desktop

【填坑】在windows系统下安装Docker Desktop后迁移镜像位置

【Docker学习系列】Docker学习1-docker安装

【Docker学习系列】Docker学习2-docker设置镜像加速器

【Docker学习系列】Docker学习3-docker的run命令干了什么?docker为什么比虚拟机快?

【Docker学习系列】Docker学习2-常用命令之启动命令和镜像命令

【Docker学习系列】Docker学习系列3:常用命令之容器命令

【Docker学习系列】Docker学习4-常用命令之重要的容器命令

【Docker学习系列汇总地址】笔记及遇到问题解决文章

镜像是什么?

镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需要的所有内容,我们把应用程序和配置依赖打包好形成一个可以交付的运行环境(包括黛米、运行时候需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件

分层的镜像

我们来从远程仓库pull个Tomcat。来看看整个pull的流程:

命令:docker pull tomcat

72432264d78f1798bdb9856b26b17872.png

我们会发现,下载是一层一层的。所以镜像是分层的

联合文件系统(UnionFS):

联合文件系统(UnionFS):是一种分层、轻量级并且高性能的文件系统。它支持对文件系统的修改

作为一次提交来一层一层的叠加。同时可以将不同目录挂载到同一个虚拟文件系统下。

Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承。基于基础镜像(没有父镜像[ps:可以理解为Java中的Object类型]),可以制作各种具体的镜像。

特性:

一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统包含所有底层的文件和目录。

如同花卷

Docker镜像加载原理是什么?

f90eb4df586fe88783c5da8c0326f038.png

 

9dc72ce9e128f9dedf42eaa547f90ac2.png为什么docker镜像要采用这种分层结构呢?

镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。

bd4de2186c9ed634097f03b4efb743dc.png重点理解

Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作容器层,容器层之下的都是镜像层。

99bb0798e6854ff0dd569664fc8da818.png

分享到:
评论

相关推荐

    docker 常用镜像下载: jdk8-alpine3.9

    加载镜像:docker load -i jdk8.tar

    centos7.6.1810---镜像包docker

    centos7.6.1810---镜像包dockercentos7.6.1810---镜像包dockercentos7.6.1810---镜像包docker

    ollama+openwebui docker 镜像

    通过理解Docker的工作原理以及如何通过Dockerfile定义镜像和容器,我们可以构建出适合ollama+openwebui这类应用的Docker镜像。这不仅简化了部署过程,还增强了应用的可移植性和一致性。而“AI”标签则暗示这个镜像...

    docker hub 官方oracle12c镜像 docker-compose 编排

    离线镜像文件大概有3个多G,存放在百度云上面,下面附上我们总结在window10 上和centos 上面创建docker for oracle 12c 容器的经验内容,坑过多少坑了。再也不需要使用安装版的oracle 。 具体: store/oracle/...

    Docker教程主要包括Docker的安装、基本概念、镜像管理、容器管理、Docker Compose的使用以及Docker网络

    dockerDocker教程主要包括Docker的安装、基本概念、镜像管理、容器管理、Docker Compose的使用以及Docker网络等内容。以下是一个详细的Docker教程概述: 一、Docker安装 CentOS系统安装Docker 卸载旧版本(如果已...

    docker的node-exporter镜像

    Docker的node-exporter镜像是一个基于Prometheus的工具,用于收集主机级别的指标数据,这些数据通常用于监控服务器的性能指标。Node Exporter能够暴露系统统计信息,例如CPU使用率、内存使用情况、磁盘I/O、文件系统...

    docker镜像node:18.15-alpine

    node:18.15-alpine镜像的tar文件 使用步骤(确保本地环境已经安装docker) 1、将tar包下载到本地 2、打开终端 3、进入到上述tar包的下载路径 4、运行docker load node-18.15-alpine.tar

    canal-adapter-v1.1.7的docker镜像

    canal-adapter-v1.1.7,docker镜像,参考的制作流程:https://blog.csdn.net/qiaodaima0/article/details/125561823?spm=1001.2014.3001.5501

    Docker中运行macOS:Docker-OSX

    推荐理由:一个让你在Docker中运行macOS操作系统的项目。通过仅需两条命令,用户可以在Docker容器中轻松启动一个macOS操作系统。这为开发者提供了一种简单而刺激的方式,让他们可以在非苹果硬件上体验macOS,从而...

    docker镜像-ubuntu16.04.3

    仅44.5M大小的docker ubuntu镜像 完整的apt支持。使用方式:docker load -i ubuntu_16.04.3-image.tar.gz

    gitlab-runner的docker镜像包

    gitlab-runner的docker镜像包

    MySQL5.7docker离线包

    本文将指导你如何使用离线的 Docker 镜像包 (docker-mysql-5.7.tar.zip) 来在 Linux 系统中安装并运行 MySQL 5.7 容器。 前提条件 • 已安装 Docker 环境。 • MySQL 5.7 Docker 镜像包 (docker-mysql-5.7.tar....

    mysql 8.4.2 docker镜像包

    Docker镜像是一种轻量级、可执行的独立软件包,包含运行应用程序所需要的一切:代码、运行时环境、库、环境变量和配置文件。 本篇将详细讨论有关MySQL 8.4.2版本的Docker镜像包的信息。首先,MySQL 8.4.2是数据库的...

    linux系统docker离线镜像jdk8镜像资源

    Docker镜像是构建Docker容器的基石,它包含了应用运行所需的一切文件系统结构和依赖,使得在不同的宿主机上能够重现一致的运行环境。 在使用Docker的过程中,网络环境的不稳定或者安全策略的限制可能会导致无法直接...

    docker-wnameless-oracle-xe-11g百度盘地址.zip

    docker oracle的离线镜像docker-wnameless-oracle-xe-11g.tar,可以导入到内网(无互联网)环境使用,该包是基于wnameless的Oracle打包的,由于网速慢,我是使用 git clone ...

    docker镜像 mysql-5.7.44.tar

    Docker镜像是一种轻量级、可执行的独立软件包,包含运行应用程序所需的所有内容:代码、运行时、库、环境变量和配置文件。 标题中提到的“docker镜像 mysql-5.7.44.tar”指的是一个特定的Docker镜像文件,这个文件...

    docker镜像etcd-3.4.18

    利用博客(https://blog.csdn.net/qq_34777982/article/details/123924095)...3.查看镜像:docker images | grep etcd 4.利用该镜像创建容器或者推到本地的harbor docker run 或者docker push 希望可以帮助有需要的人

    rabbitmq Docker镜像-4.0.5-management-alpine

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口...

Global site tag (gtag.js) - Google Analytics