• 尚硅谷Docker笔记(4) Docker 镜像


    一、是什么

    镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的有内容,包括代码、运行时、库、环境变量和配置文件。

    1、UnionFS(联合文件系统)

    UnionFS (状节又件示统)
    UnionFS (联合文件系统) : Union文件系统(UnionFS)是一一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修作为一 次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a singlevirtualfilesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像)可以制作各种具.体的应用镜像。

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

    2、Docker镜像加载原理

    Docker镜像加载原理:
    docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。

    botfs(boot file system)主要包含bootloaderkernel, bootloader主 要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一-层与我们典型的Linux/Unix系统是- - -样的,包含boot加载器和内核。当boot加载完成之 后整个内核就都在内存中了,此时内存的使用权己由bootfs转交给内核,此时系统也会卸载bootfs。

    rootfs (root file system),bootfs之 上。 包含的就是典型Linux系统中的**/dev, /proc, /bin, /etc等标准目录和文件。rootfs就 是各种不同的操作系统发行版,比如Ubuntu**,Centos等等。
    在这里插入图片描述

    平时我们安装的虚拟机的Centos都是好几个G ,为什么docker这里才要200m
    20201003133908

    对于一个精简的OS, rootfs可 以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Hostkernel,自只需要提供rootfs就行了。由此可见对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别,因此不同的发行版可以公用bootfs

    3、分层的镜像

    以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载
    在这里插入图片描述

    4、为什么 Docker 镜像要采用这种分层结构呢

    最大的一个好处就是-共享资源
    比如:有多个镜像都从相同的base镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,
    同时内存中也只需加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

    二、特点

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

    三、Docker镜像Commit操作

    docker commit 提交容器副本使之称为一个新的镜像

    docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

    案例演示:

    1、从Hub上下载tomcat镜像到本地并成功运行
    2020-10-03_14-26-27.png
    docker run -d -p 8080:8080 tomcat

    -p主机端口:docker容器端口
    -P:随机分配端口
    i:交互
    t:终端
    

    2、故意删除上一步镜像生产tomcat容器的文档
    2020-10-03_14-28-22
    3、也即当前的tomcat运行实例是一个没有文档内容的容器,以他为模板commit一个没有doc的tomcat新镜像 atguigu/tomcat02
    2020-10-03_14-29-38
    4、启动我们的新镜像并和原来的对比

    ​ 启动atuigu/tomcat02 没有doc

    ​ 启动原来tomcat他有doc

    艾欧尼亚,昂扬不灭,为了更美好的明天而战(#^.^#)
  • 相关阅读:
    docker 部署aps.net MVC到windows容器
    docker 搭建私有仓库 harbor
    解决关于:Oracle数据库 插入数据中文乱码 显示问号???
    ionic cordova build android error: commamd failed with exit code eacces
    cordova build android Command failed with exit code EACCES
    Xcode 10 iOS12 "A valid provisioning profile for this executable was not found
    使用remix发布部署 发币 智能合约
    区块链: 编译发布智能合约
    mac 下常用命令备忘录
    JQuery fullCalendar 时间差 排序获取距当前最近的时间。
  • 原文地址:https://www.cnblogs.com/lovelywcc/p/15790287.html
Copyright © 2020-2023  润新知