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拥有大量高质的官方镜像:可直接使用的服务类镜像.语言应用镜像.基础操作系统镜像等,满足绝大部分需求. 此外,可以通过定制镜像的方式来满足实际使用中的特定需求. ...
随机推荐
- Android Q 接入 MQTT
Android Q 接入 MQTT 首先在APP 下引入mqtt的库 implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1 ...
- 机器学习作业(二)逻辑回归——Matlab实现
题目太长啦!文档下载[传送门] 第1题 简述:实现逻辑回归. 第1步:加载数据文件: data = load('ex2data1.txt'); X = data(:, [1, 2]); y = dat ...
- jQuery遇到问题的小记
对jQuery动态加载到页面的数据进行处理的时候,要首先保证数据已经加载到页面上了.否则,处理不生效. 所以处理的代码应该保证在加载数据代码的后面. 这个问题源于对js的加载运行过程不熟悉.应该去了解 ...
- vue formatter element表格处理数据
formatter 指定一个vue methods 方法 作用:对从数据库中取出的数据进行处理后展示. <el-table-column prop="partner1" // ...
- js前端模块化的前世今生
前言: <!DOCTYPE html> <html> <head> <title></title> </head> <sc ...
- 解决安装完Anaconda后右键没有powershell、、、
法一: win+R 打开资源管理 输入powershell.exe 法二: 额,,按住 shift 再右键...嘿嘿嘿
- mybatis(五):源码分析 - sqlsource创建流程
- C#连接数据库时Appsettings 与connectionStrings的区别
C#连接数据库时Appsettings 与connectionStrings的区别 转载lscyo 最后发布于2018-08-08 18:38:04 阅读数 3366 收藏 展开 一..Appset ...
- Ajax返回值一直获取不到啊
原理: 同步异步的问题 Return 位置的问题 首先同步异步改为async : false, Return 的值写在ajax外部 function submit_answer(){ ...
- 苹果cms10 官方QQ微信防红防封代码
代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...