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

通过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. Nginx 基础入门

    目录 Nginx 基础入门 1.Nginx简介 1.1.相关名词解释 2.Nginx优势 3.Nginx部署 4.Nginx配置文件 5.Nginx模块 6.Nginx配置文件 6.1.Locatio ...

  2. HarmonyOS新能力让数据多端协同更便捷,数据跨端迁移更高效!

    作者:yijian,终端OS分布式文件系统专家:gongashi,终端OS分布式数据管理专家 HarmonyOS作为分布式操作系统,其分布式数据管理能力非常重要.我们也一直围绕持续为开发者带来全局&q ...

  3. test_6 python的列表去重

    1.使用内置函数set() set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集.差集.并集等. 2.创建一个空的列表进行比较,把不重复的元素添加到新的列表中 #co ...

  4. kali linux2020 虚拟机改root密码

    kali在2020版的更新中,好多小伙伴登不进root账号,这里来教大家怎样改root账户的密码 1.当我们打开虚拟机看到这个界面的时候,按e进入编辑模式 2.在编辑模式中,"quite s ...

  5. CMake与OpenMP

    CMake与OpenMP cmake_minimum_required (VERSION 2.6) project (TEST) set (TEST_VERSION 0.1) set(CMAKE_BU ...

  6. 【Android】安卓四大组件之Activity(一)

    [Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...

  7. 【刷题-LeetCode】188 Best Time to Buy and Sell Stock IV

    Best Time to Buy and Sell Stock IV Say you have an array for which the i-th element is the price of ...

  8. 【采坑小计】thanos receiver的官方文档中,并未说明tsdb落盘的配置方式

    官方文档的地址在:https://thanos.io/tip/components/receive.md/ 一开始以为落盘的时间间隔是:--tsdb.retention=15d 实际测试中发现,tha ...

  9. 【记录一个问题】thanos receiver的日志中出现错误:conflict

    完整的错误如下: level=debug ts=2021-08-16T09:07:43.412451Z caller=handler.go:355 component=receive componen ...

  10. 使用Cesium Stories在3D Tilesets中检查Features

    Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 我们创建了3D Tiles用以流式化.可视化和分析大量的三维内容 ...