linux企业实战 --Docker镜像构建

文章目录

  • 一、镜像的分层结构
  • 二、镜像的构建
    • 1. 从容器构建镜像(简:容器镜像) --commit命令
      • 1.1 commit 详述
      • 1.2 构建方式
    • 2. Dockerfile构建镜像
      • 2.1 Dockerfile 参数
      • 2.2 构建方式

一、镜像的分层结构

linux企业实战 --Docker镜像构建_第1张图片
如上图所示:

  • 共享宿主机的kernel
  • base镜像提供的是最小的Liunx发行版
  • 同一docker主机支持运行多种Liunx发行版
  • 采用分层结构的最大好处是:共享资源

linux企业实战 --Docker镜像构建_第2张图片
linux企业实战 --Docker镜像构建_第3张图片linux企业实战 --Docker镜像构建_第4张图片

linux企业实战 --Docker镜像构建_第5张图片

如上图所示:

  • Copy-on-Write 可写容器层
  • 容器层以下所有镜像层都只是可读的
  • docker 从上往下依次查找文件,即最上最早生效
  • 容器层保存镜像变化的部分,并不会对镜像本身进行任何修改
  • 一个镜像最多127层

例:拉取镜像部分操作

linux企业实战 --Docker镜像构建_第6张图片
linux企业实战 --Docker镜像构建_第7张图片
在这里插入图片描述
linux企业实战 --Docker镜像构建_第8张图片

在这里插入图片描述

二、镜像的构建

1. 从容器构建镜像(简:容器镜像) --commit命令

1.1 commit 详述

a. docker commit 构建新镜像三部曲

  • 运行容器
  • 修改容器
  • 将容器保存为新的镜像

b. 缺点

  • 效率低、可重复性若,容易出错
  • 使用者无法对镜像进行审计,存在安全隐患

1.2 构建方式

linux企业实战 --Docker镜像构建_第9张图片

linux企业实战 --Docker镜像构建_第10张图片

linux企业实战 --Docker镜像构建_第11张图片
在这里插入图片描述

2. Dockerfile构建镜像

2.1 Dockerfile 参数

linux企业实战 --Docker镜像构建_第12张图片

参数:maintainer
linux企业实战 --Docker镜像构建_第13张图片

参数:ADD

linux企业实战 --Docker镜像构建_第14张图片

参数:ENV

linux企业实战 --Docker镜像构建_第15张图片

参数:EXPOSE

linux企业实战 --Docker镜像构建_第16张图片在这里插入图片描述
查看端口
在这里插入图片描述

linux企业实战 --Docker镜像构建_第17张图片

linux企业实战 --Docker镜像构建_第18张图片

参数:VOLUME

linux企业实战 --Docker镜像构建_第19张图片

在这里插入图片描述
linux企业实战 --Docker镜像构建_第20张图片
在这里插入图片描述
linux企业实战 --Docker镜像构建_第21张图片
在这里插入图片描述
参数:WORKDIR
linux企业实战 --Docker镜像构建_第22张图片

参数:RUN
linux企业实战 --Docker镜像构建_第23张图片
在这里插入图片描述
参数:CMD & ENTRYPOINT

多个命令时仅仅执行最后一个!!!
linux企业实战 --Docker镜像构建_第24张图片
在这里插入图片描述

输出变量
linux企业实战 --Docker镜像构建_第25张图片
在这里插入图片描述

ENTRYPOINT
linux企业实战 --Docker镜像构建_第26张图片
在这里插入图片描述
参数:Shell

linux企业实战 --Docker镜像构建_第27张图片

2.2 构建方式

a. Dockerfile语法

  • Dockerfile由一系列指令和参数组成。每条指令都必须为大写字母,并且后面要跟随一个参数
  • Dockerfile中的指令会按照顺序从上到下执行,所以应该根据需要合理安排指令的顺序
  • 每条指令都会创建一个新的镜像层并对镜像进行提交

b. Docker大体上按照如下流程执行Dockerfile中的指令

  • Docker从基础镜像运行一个容器。
  • 执行第一条指令,对容器进行修改。
  • 执行类似docker commit的操作,提交一个新的镜像层。
  • Docker再基于刚提交的镜像运行一个新的容器。
  • 执行Dockerfile中的下一条命令,直到所有指令都执行完毕

示例一:可以清晰的知道构建镜像的具体步骤
linux企业实战 --Docker镜像构建_第28张图片
linux企业实战 --Docker镜像构建_第29张图片

示例二:可以观察到资源共享

linux企业实战 --Docker镜像构建_第30张图片

示例三:观察到缓存特性

linux企业实战 --Docker镜像构建_第31张图片

你可能感兴趣的:(Linux企业实战)