centos7系统
包括2部分,

  • linux内核,作用是提供操作系统的基本功能,和机器硬件交互,如何读取磁盘数据,管理网络,使用C编写的,由linus的开发团队,内核只提供操作系统的基本功能和特性,如内存管理、进程调度、文件管理等等。
  • 系统发行版,作用是提供软件功能,例如centos发行版,ubuntu发行版,suse发行版。centos发行版,yum安装包管理;ubuntu发行版。
    内核都公用宿主机的内核,上层的发行版,自由替换。

使用docker,可以切换不同的发行版,内核使用的都是宿主机的内核。
docker run -it 镜像id bash
运行容器,且进入容器内,参数 解释 -i 交互式命令操作 -t 开启一个终端 bash 进入容器后执行的命令
查看容器内的发行版本。
cat /ect/redhat-release

使用宿主机的内容,使用的发行版是容器内的发行版。
下面改为使用ubuntu的发行版
docker run -it ubuntu bash
查看容器内的发行版本
cat /etc/lsb-release

进入到opensuse
docker run -it opensuse bash
cat /etc/SuSe-release

总结

1、一个完整的系统,是由linux的内核+发行版,才组成了一个可以使用的完整系统。
2、利用docker容器,可以获取不同发行版镜像,然后基于该镜像,运行出各种容器去使用。

linux的一个完整系统包括两部分一个是linux内核,主要是与底层硬件进行交互的,例如如何获取磁盘信息,管理网络。另一个是发行版。
利用docker容器可以获取不同的发行版镜像,然后基于该镜像,运行出各种容器去使用,底层还是用的相同的一个linux内核。

什么是docker镜像

docker image搜索地址
https://hub.docker.com/
1、一个完整的docker镜像可以创建出docker容器的运行,例如一个centos:7.8.2003镜像文件,或取的是centos7的发行版,这个个镜像文件不包含linux内核,所有这个镜像只有200多M
docker的架构,镜像就是一个【发行版】的作用,需要准备一个linux内核,然后上层使用不同的【发行版】就好,然后可以自由的使用各个版本系统,兼容多种环境。


Docker镜像,分层原理
第一层,依赖Linux内核,这个内核是宿主机的,镜像如果想运行是先读取宿主机的内核的,自己加载一个Bootfs。
Bootfs(boot-file-system)主要包含bootloader和kermel,bootloader主要是引导加载kermel,Linux刚启动时会加载bootfs文件系统。

第二层,当内核加载完成后,就会启动第二层,获取发行版,rootfs,完成文件系统的基本操作。
Rootfs(root-file system),在bootfs之上,包含的就是典型的Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件。rootfs就是各种不同操作系统的发行版,比如Ubuntu,Centos等等。

第三层,定制化安装依赖,容器是做什么的就安装什么依赖,使用centos提供的软件管理, yum install nginx

第四层,Docker层,容器层,这一次与其他层是有区别的,上面的层都是只读层,不可以修改的,只有容器层是可修改的。
docker通过 union file system联合文件系统,将上述不同的每一层,整合为一个文件系统,

dockerfile的作用,自定义docker镜像的每一层的作用。

小结:
1、当通过一个image启动容器时,docker会在该image最顶层,添加一个读写文件系统做为容器,然后运行该容器。
2、docker镜像本质是基于UnionFS管理的分层系统
3、docker镜像为什么才几百兆
因为docker只有rootfs和其他镜像层,共用宿主机的linux内核(bootfs),因此很小。
4、为什么下载一个docker的nginx镜像,需要133MB,nginx安装才几兆
因为docker的nginx镜像是分层的,nginx安装包的确是几M,但是一个用于运行nginx的 镜像文件,依赖于父镜像(上一层),和基础镜像(发行版),所以下载的nginx镜像有100多M。

进入到正在运行的容器内,命令是docker exec

docker exec -it 容器名称 bash

如果想定义一个mysql5.6镜像,我们需要做
获取基础镜像,选择一个发行版平台(ubutu,centos)
在centos镜像中安装mysql5.6软件。

Docker为什么分层镜像

镜像分层一大好处就是共享资源,例如有多个镜像都来自同一个base镜像,那么在docker host只需要存储一份base镜像。
内存里也只需要加载一份host,即可为多个容器服务。
即使多个容器共享一个base镜像,某个容器修改了base镜像的内容,例如修改/etc/下配置文件,其他容器的/etc/下内容是不会被修改的,修改动作只限制在单个容器内,这就是容器的写入时复制特性。
改的是可写的容器层,当容器启动后,一个新的可写层被加载到镜像的顶部,这一层被成为容器层,容器层下的都称为镜像层。最上面的是可写层。下面的都是只读层。


只有当需要修改时才复制一份数据,这种特性被称作Copy-on-Write,可见,容器层保存的是镜像变化的部分,不会对镜像本身进行任何修改。
容器层记录对镜像的修改,所有镜像层都是只读的,不会被容器修改,所以镜像可以被多个容器共享。

Docker镜像的内容

docker镜像层级管理的方式大大方便Docker镜像的分发和存储,Docker hub是为全世界的镜像仓库。
Docker镜像代表一个容器的文件系统内容
镜像层级技术属于 联合文件系统
容器是一个动态的环境,每一层镜像里的文件都属于静态内容
dockerfile 里的ENV VOLUME CMD 等内容都会落到容器环境里。

Docker镜像的原理相关推荐

  1. [docker]七、docker镜像的制作(超详细)、docker镜像结构原理、镜像的分享——harbor

    目录 1.镜像(images) 1.1.Dockerfile:是制作镜像的文件 2.镜像结构原理 2.1.base 镜像 2.1.1.rootfs和bootfs 2.1.2.base 镜像提供的是最小 ...

  2. (转)Docker镜像结构原理

    以下内容转载自 https://blog.51cto.com/liuleis/2070461 第八篇:Docker镜像结构原理 base 镜像 base 镜像有两层含义: 不依赖其他镜像,从 scra ...

  3. docker学习(三):docker镜像分层原理及本地镜像推送到阿里云或私服

    文章目录 前言 docker镜像分层加载原理 docker镜像commit操作产生新镜像 本地镜像发布到阿里云 将本地镜像推送到私有库 前言 大家好,这是我学习docker系列的笔记文章,目标是掌握d ...

  4. 第八篇:Docker镜像结构原理

    一.base 镜像 base 镜像有两层含义: 1. 不依赖其他镜像,从 scratch 构建. 2. 其他镜像可以之为基础进行扩展. base 镜像的通常都是各种 Linux 发行版的 Docker ...

  5. docker $PWD路径_深入浅出Docker 镜像

    技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作为云计算的当红明星Docker 来势汹汹,它就像一场森林大火,烧到了我们中间.因为工作的原因, ...

  6. 深入浅出Docker 镜像 | 技术头条

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 作为云计算的当红明星Docker 来势 ...

  7. Docker镜像讲解,教你如何自制并上传一个镜像

    Docker镜像讲解 镜像是什么 Docker镜像加速原理 UnionFS(联合文件系统) Docker镜像加载原理 分层理解 Commit镜像 实战测试 镜像是什么 镜像是一种轻量级.可执行的独立软 ...

  8. Docker镜像原理学习理解

    Docker镜像原理学习理解 一.Docker镜像的组成 1.Docker镜像图层 2.union file system 3.镜像层-bootfs 4.镜像层-rootfs 5.镜像层-依赖环境 6 ...

  9. Docker+Redis镜像的原理以及部署安装(超详解附截图)

    文章来源:公众号-智能化IT系统. 一. DOCKER介绍 Docker简介 (1)Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从Apache2.0协议开源. (2)Docker 可 ...

最新文章

  1. 机器学习:范数及代码实现
  2. 6大设计原则之依赖倒置原则
  3. Netty 学习和进阶策略
  4. html距离已过去多久,用javascript写的倒计时,从某年某月距离到今天还有多少时间...
  5. 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库...
  6. Navicat Premium 12.0.24破解
  7. 机器学习从入门到精通150讲(一)-推荐系统经典模型Wide Deep(附部分代码)
  8. android 按钮顶级效果_人人都可写代码-Android零基础编程-相对布局11
  9. 伯克利2019深度学习课程—李沐及其亚马逊同事一起讲述(内附视频链接及PDF下载)
  10. 【译】Asp.Net 导出 Excel 数据的9种方案
  11. vue 如何计算list的长度_航母的水线长度到底如何计算?
  12. 【zz】Matlab 二值图像形态学函数 bwmorph
  13. [CF1073E]Segment Sum
  14. 夜曲歌词 拼音_周杰伦夜曲乐谱及歌词
  15. SQL 语句,聚沙成塔
  16. python分数约分_Python基础知识
  17. 基于树莓派的微型气象台
  18. ubuntu密码忘记了怎么办
  19. 知识图谱之NELL数据集简介
  20. css网页布局问题,CSS网页布局常见问题小结

热门文章

  1. VR和AR可以怎样干掉智能手机
  2. 推荐系统9---AFM与DIN模型(推荐系统遇上注意力机制)
  3. ant 的详细的入门教程
  4. 无代码开发大众化,摆脱Excel轻松管理企业数据
  5. 三星S95Z / S90Z OLED 电视 评测
  6. 世界杯开赛在即,告诉你5个用区块链玩转球赛的秘密 | 内附独家资源
  7. gradle 设备未就绪。解决方法
  8. linux 开启 键盘的背光灯
  9. python 操作redis之五(集合)
  10. 移动端测试——PO模式 (8)