Docker - Docker 镜像 简介
- 概述
- 简单介绍一下 docker 镜像的概念
1. 背景
- 复习 docker
- 镜像是 docker 最基础, 最重要的概念之一
- 所以正式使用之前, 最好有所理解和认识
2. 镜像
- 概述
- 简单描述
- 理解不够深入, 内容可能会有偏差
1. 镜像到底是什么
概述
- 大致说明镜像是什么
本质
- 文件系统的模板
关系类比
- 镜像 和 容器 的关系
- 类似于 代码 和 进程 的关系
- 镜像 和 容器 的关系
镜像层(layer)
- 概述
- 镜像是由 一个或多个 镜像层组成的
- 镜像层可以由多个镜像公用
- 概述
image
- 概念
- docker 为了方便镜像管理, 对镜像元数据做的抽象
- 用来映射到 镜像数据, 从而方便管理
- 以后一般不会提这个东西
- docker 为了方便镜像管理, 对镜像元数据做的抽象
- 概念
2. 启动
概述
- 简述 容器启动
- 最终的文件系统, 是由一个个镜像叠加后产生的结果
准备
- 有镜像
- 宿主机系统已经正常启动
过程
挂载 bootfs
作用
- 引导 rootfs
结果
- 引导成功后, 会被卸载
挂载 rootfs
作用
- 容器的基础文件系统
- 里面通常会有 操作系统
- 容器的基础文件系统
过程
- 挂载
- 检测完成性
- 最终转为 只读模式
挂载 其他镜像层
- 作用
- 在 rootfs 上添加其他的 镜像层
- 当然这些层也是 只读的
- 作用
挂载 init-layer
- 作用
- 记录特定 容器实例 的属性
- 环境变量
- 各种配置
- 等等
- 记录特定 容器实例 的属性
- 作用
挂载 读写层
- 作用
- 挂载对外直接读写的文件系统
- 作用
执行命令
- 作用
- 如果有命令, 就执行
- 作用
结果
产生了一个 可用的容器
- 从外面的视角来看, 这个就是一个文件系统
- 就像那种小说里藏宝图的感觉
- 藏宝图本身, 有一定透明度
- 每一张藏宝图, 只有其中一部分
- 要想得到一章完整的藏宝图, 需要将几张叠在一起看
- 或者说, 就是 ps 里的 图层
- 就像那种小说里藏宝图的感觉
- 其他的机制, 后面会有描述
- 从外面的视角来看, 这个就是一个文件系统
可能产生的疑问
- 分层 是怎么回事
- layer
- 分了那么多层, 到底怎么挂载
- 只读层
- 读写层
- 既然有那么多层, 读写到底怎么办
- 分层 是怎么回事
3. 特性
1. 分层
概述
- 镜像的分层
- layer
- 镜像的分层
镜像的组成
- 一个基础镜像
- 通常是操作系统镜像
- 若干其他分层
- 通常是各种命令
- dockerfile 里, 一个命令就是一层
- 通常是各种命令
- 从外面看
- 就像一个 文件系统, 而不多个的叠加
- 一个基础镜像
只读
- 启动容器后, 镜像里的内容, 是只读的
- 具体的写, 需要 联合挂载 和 写时复制 的配合
- 启动容器后, 镜像里的内容, 是只读的
layer 复用
- 镜像由多个 layer 组成
- layer 是可以复用的
- 多个镜像, 同时使用一个 layer 层
- 会影响到后面的 写时复制
2. 联合挂载
概述
- 整合多个 layer 里的文件系统, 以及 读写文件系统
- 同时挂载到一个 mountpoint 上
- 对外看来, 只是一个 联合文件系统
- 整合多个 layer 里的文件系统, 以及 读写文件系统
感觉这个, 好像没什么可说的...
3. 写时复制
概述
- 一种 优化措施
- 较少并发用户的资源占用
- 加快复用资源的加载速度
- 怎么说
- 平时
- 大家一起用
- 写时
- 复制出一份私有的数据
- docker 里就是写到 具体容器的读写层
- 复制出一份私有的数据
- 平时
- 一种 优化措施
文件读写
读
- 没有数据冲突
- 直接读
- 有数据冲突
- 上层会让底层不可见
- 但不会实质影响底层内容
- 没有数据冲突
写
- 只对 读写层写入
- 不会影响底层的内容
问题
- 写入的东西, 不会影响镜像本身
- 容器挂了, 就没了
- 如果需要构建新容器, 那该怎么办呢
- 写入的东西, 不会影响镜像本身
4. 貌似还有个 内容寻址
- 但是这个我也不太明白, 不知道从何说起
4. 镜像基本属性
概述
- 镜像基本属性
- 查看
- 解释
- 镜像基本属性
查看
> docker image ls
结果
- 结果查询, 通常会有这么写属性
REPOSITORY
概述
- 仓库
格式
# 格式1
<repo>
# 格式2
<repo>/<subRepo>
TAG
概述
- 镜像标记
- 可以理解为 版本号
默认
- latest
IMAGE ID
- 概述
- 镜像 镜像生成时, 随机生成的内容
- 概述
CREATED
- 概述
- 镜像创造的事件
- 概述
SIZE
- 概述
- 镜像的大小
- 概述
- 结果查询, 通常会有这么写属性
ps
ref
- docker 实践
- 第一本 docker 书
- Docker 镜像之进阶篇
后续
- docker 资源管理命令
- 镜像
- 容器
- 存储
- 网络
- docker 资源管理命令
Docker - Docker 镜像 简介的更多相关文章
- docker入门——镜像简介
什么是docker镜像 Docker镜像是由文件系统叠加而成. 最底端是一个引导文件系统,即bootfs: 这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永远不会和引导文件系统有 ...
- docker基础属性简介包含镜像 容器 registry服务等概念及关系
Docker 镜像 我们都知道,操作系统分为内核和用户空间.对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持.而 Docker 镜像(Image),就相当于是一个 r ...
- Docker(二) 镜像
简介 Docker镜像是什么? 它是一个只读的文件,就类似于我们安装操作系统时候所需要的那个iso光盘镜像,通过运行这个镜像来完成各种应用的部署. 这里的镜像就是一个能被docker运行起来的一个程序 ...
- 容器技术之Docker私有镜像仓库docker-distribution
在前边的博客中我们说到docker的架构由docker客户端.服务端以及仓库组成:docker仓库就是用来存放镜像的地方:其实docker registry我们理解为存放docker镜像仓库的仓库比较 ...
- 庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署
庐山真面目之九微服务架构 NetCore 基于 Docker 基础镜像和挂载文件部署 一.简介 我们在上一篇文章<庐山真面目之八微服务架构 NetCore 基于 Dockerfile ...
- Docker:镜像操作和容器操作
镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...
- Docker的镜像
镜像是容器的运行基础,容器是镜像运行后台的形态 镜像的概念 镜像是一个包含程序运行必要依赖环境和代码的只读文件,它采用分层的文件系统,将每一次改变以读写层的形式增加到原来的只读文件上 镜像的系统结构 ...
- Docker - Docker国内镜像的配置及使用
Docker国内镜像 DaoCloud - Docker加速器 阿里云 - 开发者平台 微镜像 - 希云cSphere 镜像广场 - 时速云 灵雀云 网易蜂巢 阿里云的Docker加速器 阿里云 - ...
- Docker image 镜像介绍
操作镜像 使用 docker 命令行操作 docker 镜像 获取镜像 使用「docker pull +镜像名称」从网络上下载image镜像 core@localhost ~ $ docker pul ...
- Docker - 定制镜像
Dockerfile Docker Hub拥有大量高质的官方镜像:可直接使用的服务类镜像.语言应用镜像.基础操作系统镜像等,满足绝大部分需求. 此外,可以通过定制镜像的方式来满足实际使用中的特定需求. ...
随机推荐
- IDEA please configure web facet first
- 自定义输入函数 - C语言编程
有返回功能的输入函数: #include <stdio.h> #include <conio.h> void input(char content[]); int main() ...
- BUUCTF [SUCTF 2019]EasySQL
首先打开网址 发现有三种显示方法 还有一个没有输出 可以堆叠注入 1;show databases; 1;show tables; 可以看到有一个Flag表 测试发现from flag都被过滤不能直接 ...
- 1.spring源码-BeanPostProcessor后置处理器
1.BeanPostProcessor接口的介绍: BeanPostProcessor是一个接口,其中有两个方法,postProcessBeforeInitialization和postProcess ...
- bat代码中判断 bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT
· bat 代码中判断bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT 一.判断bat是否是以管理员权限运行 @echo off net.exe session >NUL & ...
- SSH多表操作入门
这个系统写到这里,所涉及到的都是单表的操作,增删改查,现在功能需要完善,涉及到多表操作,开始是毫无头绪,书上的代码也没有现成的可以借鉴,想来就从最简单的开始.问题出现了很多,不过最后在龙哥的提示下还是 ...
- mysql update某个字段替换成某个值
UPDATE xc_admin_vehicle SET brandid= REPLACE(brandid, 19, 54) UPDATE xc_admin_models SET bid= REPLAC ...
- 利用Python数据分析基础
一.Numpy的ndarray:一种多维数组 ndarray是一个通用的同构多维数据容器,其所有元素必须是相同的类型.每个数组都有一个shape(一个表示各维度的元组)和dtype(一个用于说明数据数 ...
- 图像滤波—opencv函数
函数原型 方框滤波 ,-), bool normalize = true, int borderType = BORDER_DEFAULT) 均值滤波 ,-), int borderType = ...
- jvm(5):类加载机制
类加载时机 Java虚拟机规范并没有强制约束类加载过程的第一个阶段时机,但对初始化阶段由严格规定5中必须立即对类进行初始化的情况: 遇到new.getstatic.putstatic或invokest ...