镜像到底是什么、镜像的层结构又是什么

通过docker history命令进行分析,镜像是一种其他镜像+文件+命令的组合。

这些镜像的加载、文件导入创建、命令是存在顺序关系的,所以也引出了层的概念。

[root@localhost ~]# docker history postgres
IMAGE CREATED CREATED BY SIZE COMMENT
b97bae343e06 20 months ago /bin/sh -c #(nop) CMD ["postgres"] 0B
<missing> 20 months ago /bin/sh -c #(nop) EXPOSE 5432 0B
<missing> 20 months ago /bin/sh -c #(nop) ENTRYPOINT ["docker-entry… 0B
<missing> 20 months ago /bin/sh -c ln -s usr/local/bin/docker-entryp… 34B
<missing> 20 months ago /bin/sh -c #(nop) COPY file:bf774aaf2659f830… 10.9kB
<missing> 20 months ago /bin/sh -c #(nop) VOLUME [/var/lib/postgres… 0B
<missing> 20 months ago /bin/sh -c mkdir -p "$PGDATA" && chown -R po… 0B
<missing> 20 months ago /bin/sh -c #(nop) ENV PGDATA=/var/lib/postg… 0B
<missing> 20 months ago /bin/sh -c #(nop) ENV PATH=/usr/local/sbin:… 0B
<missing> 20 months ago /bin/sh -c mkdir -p /var/run/postgresql && c… 0B
<missing> 20 months ago /bin/sh -c set -eux; dpkg-divert --add --re… 53.6kB
<missing> 20 months ago /bin/sh -c set -ex; export PYTHONDONTWRITE… 204MB
<missing> 20 months ago /bin/sh -c #(nop) ENV PG_VERSION=12.3-1.pgd… 0B
<missing> 20 months ago /bin/sh -c #(nop) ENV PG_MAJOR=12 0B
<missing> 20 months ago /bin/sh -c set -ex; key='B97B0AFCAA1A47F044… 2.88kB
<missing> 20 months ago /bin/sh -c mkdir /docker-entrypoint-initdb.d 0B
<missing> 20 months ago /bin/sh -c set -eux; apt-get update; apt-g… 1.39MB
<missing> 20 months ago /bin/sh -c #(nop) ENV LANG=en_US.utf8 0B
<missing> 20 months ago /bin/sh -c set -eux; if [ -f /etc/dpkg/dpkg… 24.9MB
<missing> 20 months ago /bin/sh -c set -eux; savedAptMark="$(apt-ma… 4.17MB
<missing> 20 months ago /bin/sh -c #(nop) ENV GOSU_VERSION=1.12 0B
<missing> 20 months ago /bin/sh -c set -eux; groupadd -r postgres -… 329kB
<missing> 20 months ago /bin/sh -c set -ex; if ! command -v gpg > /… 9.34MB
<missing> 20 months ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 20 months ago /bin/sh -c #(nop) ADD file:4d35f6c8bbbe6801c… 69.2MB

Base镜像

下面命令可以作为Dockerfile创建镜像的第一行,下面使用的Centos7作为发行版。

FROM centos:7

Docker依赖于Linux内核,实际下载的centos:7 镜像体积非常小,因为最后使用的还是宿主机内核。

命令

各层中的命令对Base镜像进行改造,以满足各种功能。例如镜像增加httpd组件。

RUN yum install -y httpd

巨人的肩膀

Docker 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)

理解Docker镜像分层 - Ryan.Miao - 博客园 (cnblogs.com)

Docker 镜像 层结构理解的更多相关文章

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

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

  2. Dive查看docker镜像层信息

    1.主要采用docker运行dive的方式,不然宿主机还要安装go那些挺麻烦的.具体用法可查看官方: https://github.com/wagoodman/dive 2.拉取dive镜像 dock ...

  3. docker 镜像构建上下文理解

    原文 写得贼好,特别鸣谢,哈哈 如果注意,会看到 docker build 命令最后有一个 . . . 表示当前目录,而 Dockerfile就在当前目录,因此不少初学者以为这个路径是在指定 Dock ...

  4. Docker 镜像之进阶篇

    笔者在<Docker 基础 : 镜像>一文中介绍了 docker 镜像的基本用法,本文我们来介绍 docker 镜像背后的技术原理. 什么是 docker 镜像 docker 镜像是一个只 ...

  5. Docker 镜像之存储管理

    笔者在<Docker 镜像之进阶篇>中介绍了镜像分层.写时复制以及内容寻址存储(content-addressable storage)等技术特性,为了支持这些特性,docker 设计了一 ...

  6. 深入分析 Docker 镜像原理

    摘要:近日, DaoCloud 软件工程师孙宏亮在 CSDN Container 微信群为大家带来了 Docker 镜像原理的深度分享,本次分享的重点是 Docker 镜像,分享的内容主要包含两个部分 ...

  7. docker镜像、容器

    第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角 ...

  8. 菜鸟系列docker——docker镜像上(3)

    1. 镜像image 镜像和容器的关系就和安装包和程序的关系一样,有了镜像才可以启动容器,容器是镜像的一个运行实例. 1.1 镜像的结构 通过第二节仓库,可能很多看官已经查看到镜像是分层的,接下来将对 ...

  9. Docker镜像存储-overlayfs

    一.概述 Docker中的镜像采用分层构建设计,每个层可以称之为“layer”,这些layer被存放在了/var/lib/docker/<storage-driver>/目录下,这里的st ...

随机推荐

  1. 【刷题-PAT】A1114 Family Property (25 分)

    1114 Family Property (25 分) This time, you are supposed to help us collect the data for family-owned ...

  2. 【源码阅读】vm-insert与vm-storage之间的通讯

    先说结论 vm-insert与vm-storage之间采用极其简单的通讯协议 对于简单的场景,越简单性能越高 vm-insert连接到vm-storage后,先发送字符串vminsert.02,vm- ...

  3. Django db使用MySQL连接池

    Django db使用MySQL连接池 Sep 25 2016 Django db模块本身不支持MySQL连接池,只有一个配置CONN_MAX_AGE连接最大存活时间,如果WSGI服务器使用了线程池技 ...

  4. Go 变量及基本数据类型3

    #### Go 变量及基本数据类型(三)今天学习一下剩下的两个基本数据类型(布尔类型,字符串类型)以及基本数据类型的相互转换##### 布尔类型布尔类型也称为bool 类型, bool 类型只允许取值 ...

  5. macOS Monterey 12.12.2 (21D49) 正式版 ISO、IPSW、PKG 下载

    本站下载的 macOS Monterey 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装. 2022 年 1 月 27 日,m ...

  6. 一起玩转玩转LiteOS组件:TinyFrame

    摘要:TinyFrame是一个简单的用于解析串口(如 UART.telnet.套接字等)通信数据帧的库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转TinyFrame>,作者:Lio ...

  7. PostgreSQL逻辑订阅

    测试环境:PostgreSQL 13.2 1.逻辑订阅简介 由于物理复制只能做到这个集群的复制,不能正对某个对象(表)进行复制,且物理复制的备库只能读,不能写.相反,逻辑订阅同时支持主备库读写,且可以 ...

  8. JVM垃圾收集器(八)

    一.垃圾收集器 有了前面JVM参数的了解下面来看下JVM的垃圾收集器:如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.  JVM(HotSpot)有7种垃圾收集器,7种垃圾收集 ...

  9. 「MtOI2018」魔力环

    首先发现是经典的循环置换本质不同个数模型,根据 Burnside 引理: \[|X / G| = \frac{1}{|G|}\sum\limits_{g \in G} |X ^ g| \] 考虑第 \ ...

  10. javac、java、javap 的使用详解

    简介 JDK中常用命令 切换目录 切换目录 进入D:\zs 第一种 第二种 其他常用命令 cls: 实现清屏 cd..: 切换到上一级目录 javac 简介 来编译.java文件的.命令行下直接输入j ...