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 ...
随机推荐
- Easticsearch概述(ES、Lucene、Solr)一
ES是在Lucene的基础上实现的 1.Lucene全文检索 lucene是一个全文搜索框架,而不是应用产品.因此它并不像http://www.baidu.com/或goolge Destop 那么拿 ...
- Solon Web 开发,七、视图模板与Mvc注解
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- 【刷题-LeetCode】202. Happy Number
Happy Number Write an algorithm to determine if a number n is "happy". A happy number is a ...
- unity3d,java,c#,python,rospy的socket通信测试
1.C#在与其他人通信时,最好不要用tcpclient来承接其他语言,会收不到用户名,最好都用socket. 2.unity3d在与java通信时,对方返回我unity3d发的数据流会打印收到一个类, ...
- 学习OAuth 2.0
认识OAuth 2.0 OAuth 2.0 是行业标准的授权协议. OAuth 2.0 专注于客户端开发人员的简单性,同时为 Web 应用程序.桌面应用程序.移动设备提供特定的授权流程. 应用场景 有 ...
- StringBuilder类练习
1 package cn.itcast.p2.stringbuffer.demo; 2 3 public class StringBuilderTest { 4 public static void ...
- linux挂载windows nfs
1.win下创建nfs文件夹并共享 2.登陆linux,执行 yum 3.创建挂载点 4.挂载win nfs 5./etc/fstab添加永久挂载 6.查看挂载磁盘,此时windows盘已落在linu ...
- Reset the default deployment target in Windows Phone Developer Tools
楼主在更新Windows Phone 8.1 SDK之后遇到一个很烦人的问题,编译选择调试目标列表没有数据.正常情况下都会有一个模拟器列表和真机的选项.肯定又是Preview的bug,问题产生的原因暂 ...
- 阿里巴巴发布最佳实践 | 阿里巴巴DevOps实践指南
编者按:本文源自阿里云云效团队出品的<阿里巴巴DevOps实践指南>,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电 ...
- Abp 审计模块源码解读
Abp 审计模块源码解读 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客 ...