Docker 镜像 层结构理解
镜像到底是什么、镜像的层结构又是什么
通过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 镜像 层结构理解的更多相关文章
- 『现学现忘』Docker基础 — 26、Docker镜像分层的理解
目录 1.分层的镜像 2.加深理解 3.特别说明 1.分层的镜像 我们可以去下载一个镜像,注意观察下载的日志输出,可以看到Docker的镜像是一层一层的在下载. 思考:为什么Docker镜像要采用这种 ...
- Dive查看docker镜像层信息
1.主要采用docker运行dive的方式,不然宿主机还要安装go那些挺麻烦的.具体用法可查看官方: https://github.com/wagoodman/dive 2.拉取dive镜像 dock ...
- docker 镜像构建上下文理解
原文 写得贼好,特别鸣谢,哈哈 如果注意,会看到 docker build 命令最后有一个 . . . 表示当前目录,而 Dockerfile就在当前目录,因此不少初学者以为这个路径是在指定 Dock ...
- Docker 镜像之进阶篇
笔者在<Docker 基础 : 镜像>一文中介绍了 docker 镜像的基本用法,本文我们来介绍 docker 镜像背后的技术原理. 什么是 docker 镜像 docker 镜像是一个只 ...
- Docker 镜像之存储管理
笔者在<Docker 镜像之进阶篇>中介绍了镜像分层.写时复制以及内容寻址存储(content-addressable storage)等技术特性,为了支持这些特性,docker 设计了一 ...
- 深入分析 Docker 镜像原理
摘要:近日, DaoCloud 软件工程师孙宏亮在 CSDN Container 微信群为大家带来了 Docker 镜像原理的深度分享,本次分享的重点是 Docker 镜像,分享的内容主要包含两个部分 ...
- docker镜像、容器
第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角 ...
- 菜鸟系列docker——docker镜像上(3)
1. 镜像image 镜像和容器的关系就和安装包和程序的关系一样,有了镜像才可以启动容器,容器是镜像的一个运行实例. 1.1 镜像的结构 通过第二节仓库,可能很多看官已经查看到镜像是分层的,接下来将对 ...
- Docker镜像存储-overlayfs
一.概述 Docker中的镜像采用分层构建设计,每个层可以称之为“layer”,这些layer被存放在了/var/lib/docker/<storage-driver>/目录下,这里的st ...
随机推荐
- C# 开源一个基于 yarp 的 API 网关 Demo,支持绑定 Kubernetes Service
关于 Neting 刚开始的时候是打算使用微软官方的 Yarp 库,实现一个 API 网关,后面发现坑比较多,弄起来比较麻烦,就放弃了.目前写完了查看 Kubernetes Service 信息.创建 ...
- HDU 1009 FatMouse' Trade (贪心)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009 题目大意:肥鼠准备了 磅的猫粮,准备和看管仓库的猫交易,仓库里装有他最喜爱的食物 豆.仓库有 个 ...
- 网络协议学习笔记(八)DNS协议和HttpDNS协议
概述 上一篇主要讲解了流媒体协议和p2p协议,现在我给大家讲解一下关于DNS和HttpDNS的相关知识. DNS协议:网络世界的地址簿 在网络世界,也是这样的.你肯定记得住网站的名称,但是很难记住网站 ...
- 【Java】泛型
文章目录 泛型 为什么要有泛型 在集合中使用泛型 如何自定义泛型结构 自定义泛型类.接口 泛型方法 泛型在继承方面的体现 通配符的使用 有限制条件的通配符的使用 泛型 为什么要有泛型 集合容器类在设计 ...
- 01-JS中字面量与变量
01-JS中字面量与变量 一.直接量(字面量) 字面量:英语叫做literals,也做直接量,看见什么,它就是什么. (一)数字的字面量 数字的字面量,就是这个数字自己,并不需要任何的符号来界定这个数 ...
- 《剑指offer》面试题40. 最小的k个数
问题描述 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:arr = [3,2,1], k ...
- Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到17 了吗?
2022年1月20日,Spring官方发布了Spring Boot 3.0.0的第一个里程碑版本M1. 下面一起来来看看Spring Boot 3.0.0 M1版本都有哪些重大变化: Java基线从 ...
- Vscode不能连接应用商店
删除这两个文件即可: 1.C:\Users\Administrator\.vscode 2.C:\Users\Administrator\AppData\Roaming\Code
- golang中GPM模型原理与调度器设计策略
一.GMP模型原理first: 1. 全局队列:存放待运行的G2. P的本地队列:同全局队列类似,存放待运行的G,存储的数量有限:256个,当创建新的G'时,G'优先加入到P的本地队列,如果队列已满, ...
- golang中锁
一.什么场景下需要用到锁当程序中就一个线程的时候,是不需要加锁的,但是通常实际的代码不会只是单线程,有可能是多个线程同时访问公共资源,所以这个时候就需要用到锁了,那么关于锁的使用场景主要涉及到哪些呢? ...