docker镜像与分层

docker镜像由一些松耦合的制度镜像层组成

docker负责堆叠这些镜像层并将它们表示为单个统一的对象

当 docker image pull ubuntu:latest 时 每一行 pull complete就代表拉取完成了一层

查看镜像分层的方式 docker image inspect

  1. beginner@beginner-virtual-machine:~$ docker pull tomcat
  2. Using default tag: latest
  3. latest: Pulling from library/tomcat
  4. 0e29546d541c: Pull complete
  5. 9b829c73b52b: Pull complete
  6. cb5b7ae36172: Pull complete
  7. 6494e4811622: Pull complete
  8. 668f6fcc5fa5: Pull complete
  9. dc120c3e0290: Pull complete
  10. 8f7c0eebb7b1: Pull complete
  11. 77b694f83996: Pull complete
  12. 0f611256ec3a: Pull complete
  13. 4f25def12f23: Pull complete
  14. Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
  15. Status: Downloaded newer image for tomcat:latest
  16. docker.io/library/tomcat:latest
  17. 可以发现拉取的时候tomcat一共有十层

docker 将所有镜像层堆叠合并,对外提供统一的视图

共享镜像层

docker pull tomcat

  • 假设一共有十层 ,当发现本地存在dc120c3e0290这个镜像层时 就不会再次拉取 而是直接使用本地的镜像层

  • 当不再需要某个镜像的时候,可以通过 docker image rm 命令从 Docker 主机删除该镜像。其中,rm 是 remove 的缩写。删除操作会在当前主机上删除该镜像以及相关的镜像层。这意味着无法通过 docker image ls 命令看到删除后的镜像,并且对应的包含镜像层数据的目录会被删除。但是,如果某个镜像层被多个镜像共享,那只有当全部依赖该镜像层的镜像都被删除后,该镜像层才会被删除。

容器生成镜像

当通过commit命令 使用当前容器生成镜像时,新的镜像就会多出一层 是可写容器生成的层数

  1. beginner@beginner-virtual-machine:~$ docker run -d -p 8080:8080 tomcat:latest
  2. 5cc1beeff39b8b249b4329ff9319737062693f7b3817eedd8b9d757498cc42b1
  3. beginner@beginner-virtual-machine:~$ docker container ls
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 5cc1beeff39b tomcat:latest "catalina.sh run" 11 seconds ago Up 10 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp clever_goldberg
  6. beginner@beginner-virtual-machine:~$ docker exec -it clever_goldberg bash
  7. root@5cc1beeff39b:/usr/local/tomcat# mkdir helloworld
  8. root@5cc1beeff39b:/usr/local/tomcat# exit
  9. exit
  10. beginner@beginner-virtual-machine:~$ docker commit clever_goldberg test:1.0
  11. sha256:5535c3a6ec2412eb1eeaa7a01ac2c40645f7c105a340c6a3de03e9a25195d830
  12. beginner@beginner-virtual-machine:~$ docker inspect test:1.0
  13. =====================================
  14. "Layers": [
  15. "sha256:11936051f93baf5a4fb090a8fa0999309b8173556f7826598e235e8a82127bce",
  16. "sha256:31892cc314cb1993ba1b8eb5f3002c4e9f099a9237af0d03d1893c6fcc559aab",
  17. "sha256:8bf42db0de72f74f4ef0c1d1743f5d54efc3491ee38f4af6d914a6032148b78e",
  18. "sha256:26a504e63be4c63395f216d70b1b8af52263a5289908df8e96a0e7c840813adc",
  19. "sha256:f9e18e59a5651609a1503ac17dcfc05856b5bea21e41595828471f02ad56a225",
  20. "sha256:832e177bb5008934e2f5ed723247c04e1dd220d59a90ce32000b7c22bd9d9b54",
  21. "sha256:3bb5258f46d2a511ddca2a4ec8f9091d676a116830a7f336815f02c4b34dbb23",
  22. "sha256:59c516e5b6fafa2e6b63d76492702371ca008ade6e37d931089fe368385041a0",
  23. "sha256:bd2befca2f7ef51f03b757caab549cc040a36143f3b7e3dab94fb308322f2953",
  24. "sha256:3e2ed6847c7a081bd90ab8805efcb39a2933a807627eb7a4016728f881430f5f",
  25. "sha256:80b815ac2177a578ce5b28818a5835413957cdb8c146ffcedfa26f520aad3074"
  26. ]
  27. =====================================
  28. 现在是十一层

docker基础_docker镜像与分层的更多相关文章

  1. docker基础之镜像

    获取镜像 从 Docker Registry 获取镜像的命令是 docker pull.其命令格式为: docker pull [选项] [Docker Registry地址]<仓库名>: ...

  2. Docker:dockerfile镜像的分层 [九]

    一.docker镜像的分层 1.图像呈现 2.命令呈现 [root@oldboy kod]# docker image history kod:v1 IMAGE CREATED CREATED BY ...

  3. docker基础——2.镜像管理

    1. Docker镜像的主要特点 (1) 采用分层构建机制. 最底层为bootfs,用于系统引导的文件系统,包括bootloader和kernel,容器启动后会被卸载以节约资源. 其上为rootfs, ...

  4. docker 基础之镜像加速

    国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器 对于使用 systemd 的系统,用 systemctl enable docker 启用服务后,编辑 /etc/systemd ...

  5. docker基础——自定义镜像、创建私有仓库、查看 docker 运行状态

    一.自定义镜像 1,案例1 要求:请自定义一个 docker 镜像,基于 hub.c.163.com/library/centos,要求创建出来的镜像在生成容器的时候,可以直接使用 ifconfig ...

  6. docker基础_docker引擎内部原理

    docker引擎内部原理 docker主要由以下主要组件构成:docker客户端.docker守护进程(daemon).containerd.runc.shim daemon daemon的主要功能包 ...

  7. Docker基础知识及入门

    什么是Docker? Docker是由dotcloud公司使用golang语言进行开发的,基于Linux内核的 cgroup,namespace,以及OverlayFS类的Union FS等技术,对进 ...

  8. 『现学现忘』Docker基础 — 26、Docker镜像分层的理解

    目录 1.分层的镜像 2.加深理解 3.特别说明 1.分层的镜像 我们可以去下载一个镜像,注意观察下载的日志输出,可以看到Docker的镜像是一层一层的在下载. 思考:为什么Docker镜像要采用这种 ...

  9. Docker中的镜像分层技术详解

    早在集装箱没有出现的时候,码头上还有许多搬运的工人在搬运货物,在集装箱出现以后,码头上看到更多的不是工人,而且集装箱的搬运模式更加单一,更加高效,还有其他的好处,比如:货物多打包在集装箱里面,可以防止 ...

随机推荐

  1. python中文及符号检测工具带GUI界面

    import tkinter import webbrowser import re #本程序是一个中文字符和中文检测工具 #中文字符自己添加,我只添加了一点 #输入字符串,点击检查文本即可判断有没有 ...

  2. Skye无人机刷Betaflight详细图文教程

    ​前言 首先十分感谢B站TASKBL up主的视频教程以及他的耐心指导,视频链接Skye 原机主板刷BetaFlight 参考教程_哔哩哔哩_bilibili.整个改造过程耗时三天,现把改造过程以及遇 ...

  3. 接口(interface)与抽象类(abstract class)两者的异同

    首先说明一下,JDK1.8以后接口可以有默认方法和静态方法以及私有方法. 一.概念: 接口(interface):是抽象类的变体,其中所有的方法都是抽象的且不能有方法体,而且只能定义 static f ...

  4. linklist template

    #include <iostream.h> typedef int ElemType; typedef struct LNode { ElemType data; struct LNode ...

  5. java中遗留的小问题

    一.类型转换 short s = 1; s = s + 1; //false,因为1是int类型,会损失精度 short s = 1; s += 1; //true,因为+=有自带强转 二.逻辑运算符 ...

  6. Spring由哪些模块组成?

    以下是Spring 框架的基本模块: Core module Bean module Context module Expression Language module JDBC module ORM ...

  7. 手撕代码:leetcode70爬楼梯

    装载于:https://blog.csdn.net/qq_35091252/article/details/90576779 题目描述 假设你正在爬楼梯.需要n阶你才能到达楼顶. 每次你可以爬1或2个 ...

  8. Elasticsearch 是如何实现 Master 选举的?

    1.Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之 间通过这个 RPC 来发现彼此)和 Unicast(单播模块包含一个主机列表以控制哪 些节点 ...

  9. Thymeleaf使用遇见的问题,如字符串不相等

    所属情况:内联JavaScript语言 当使用Thymeleaf取请求参数的值时,会出现数组符号包围值的问题,可通过[0]进行取出里面的字符串,取值之前需先判断值是否存在,不然会抛出索引0不存在问题 ...

  10. 创建TypeScript代码模板(NVS+Yarn+ESLint+Prettier+Husky)

    创建TypeScript代码模板(NVS+Yarn+ESLint+Prettier+Husky) Cui, Richard Chikun 本文笔者将带你在Github代码仓库创建TypeScript代 ...