【Docker那些事】系列文章

Dockerfile 文件结构、docker镜像构建过程详细介绍
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
构建Docker镜像指南,含实战案例
Docker 制作自定义化的Tomcat镜像
docker 安装 mysql 并映射数据库存放路径及配置文件
docker安装tomcat 映射配置文件、日志文件
docker安装nginx,配置nginx,并成功访问
docker安装redis并将配置文件和数据文件映射到外部

Dockerfile 基础介绍

Dockerfile是构建镜像的指令文件,由一组指令组成,文件中每条指令对应linux中一条命令,在执行构建Docker镜像时,将读取Dockerfile中的指令,根据指令来操作生成指定Docker镜像。

Dockerfile文件的编写需要准守一定的规则,Dockerfile的基础文件规则如下:

  1. 每条保留字指令都必须是大写字母,并且后面要跟随至少一个参数
  2. 指令按照从上到下,顺序执行
  3. #开头的表示注释
  4. 每条指令都会创建一个新的镜像层,并对镜像进行提交

执行Dockerfile的基本流程

  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器作出修改
  3. 执行类似 docker commit 的操作,提交一个新的镜像层
  4. docker在基于刚提交的镜像再运行一个新容器
  5. 执行dockerfile中的下一条指令直到所有指令都执行完成

Dockerfile的指令结构

FROM 镜像名 : 指定新的镜像所基于的基础镜像
MAINTAINER 名字 : 说明新镜像的维护人,留下作者名和邮箱标记
RUN 命令 : 容器构建时需要运行的命令。在所基于的基础镜像上执行命令,并提交到新的镜像中
EXPOSE 端口号 : 指定新镜像加载到Docker时要对外暴露的端口
WORKDIR 路径名 : 指定在容器创建后,终端默认登陆后进入的工作目录。为后续的RUN 、CMD、ENTRYPOINT 指定工作目录
ENV 环境变量 变量值 : 设置一个环境变量的值,可以在后续RUN指令使用
ADD 源文件/目录 目标文件/目录 : 将文件或目录复制到镜像目标文件中,并且会自动处理URL和解压tar压缩包。文件和Dockerfile位于同一目录
COPY 源文件/目录 目标文件/目录 : 与ADD相似,将文件或目录复制到镜像目标文件中。源文件和Dockerfile位于同一目录
VOLUME [“目录”] : 在容器中挂载一个数据卷,用于数据保存和持久化工作
CMD [“要运行的程序”,“参数1”,“参数2”] : 指定启动容器时要运行的命令或脚本。可以有多个CMD指令,但只有最后一个生效。CMD会被docker run指令后的参数替换
ENTRYPOINT [“要运行的程序”,“参数1”,“参数2”] : 和CMD一样,指定启动容器时要运行的命令或脚本。ENTRYPOINT不会被docker run指令后的参数替换,而是在其后追加参数
ONBUILD 命令 : 指定所生成的镜像作为一个基础镜像时所要运行的命令。
USER 用户名 /UID : 指定运行容器时的用户

Dockerfile 文件结构、docker镜像构建过程详细介绍相关推荐

  1. docker history 查看docker镜像构建过程 还原dockerfile 查看启动参数

    介绍: ~]# docker history --help Usage: docker history [OPTIONS] IMAGE Show the history of an image Opt ...

  2. Vue第三部分(1):Vue脚手架构建过程详细介绍和案例

    Vue-CLI 基本使用 命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算 ...

  3. 【工作向】docker镜像构建方法与命令

    序言 docker镜像制作,学习记录 1. docker镜像制作的常见方法 1.1 docker commit基于已有容器构建镜像(手工) 这种方法将已有容器存为新的镜像,但是不建议使用使用这种方式, ...

  4. Docker 镜像构建之 Dockerfile

    Docker 镜像构建之 Dockerfile 在 Docker 中构建镜像最常用的方式,就是使用 Dockerfile.Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜 ...

  5. Docker学习(3)-Docker镜像构建和使用

    Docker学习(1)-Docker简介 Docker学习(2)-Docker基础1 Docker 镜像与制作 Docker 镜像内是否包含内核(bootfs)? 首先,从镜像的体积大小来说,一个比较 ...

  6. 追求极简:Docker镜像构建演化史

    // Dockerfile.target.alpine 自从2013年dotCloud公司(现已改名为Docker Inc)发布Docker容器技术以来,到目前为止已经有五年多的时间了.这期间Dock ...

  7. docker 导入镜像_官方下一代Docker镜像构建神器 -- BuildKit

    BuildKit是Docker官方社区推出的下一代镜像构建神器--可以更加快速,有效,安全地构建docker 镜像.Docker v18.06已经集成了该组件.BuildKit可用于多种导出格式(例如 ...

  8. skywalking—docker镜像构建k8s部署

    前言 skywalking是个非常不错的apm产品,但是在使用过程中有个非常蛋疼的问题,在基于es的存储情况下,es的数据一有问题,就会导致整个skywalking web ui服务不可用,然后需要a ...

  9. 从Docker镜像构建演化史来了解多阶段构建的影响

    现在很多开发者都会慢慢习惯在开发环境通过Docker来构建开发环境,有时候可能会有环境移植的问题,所以需要我们写好一套Dockerfile来构建相关的开发镜像,既然说到镜像,那我想问问大家了解Dock ...

最新文章

  1. 杭电 HOJ 1251 统计难题 解题报告
  2. 解微分方程_matlab
  3. Vue全家桶 + webpack 构建单页应用初体验
  4. 初学ArcGIS API for JavaScript
  5. RNN-LSTM循环神经网络-03Tensorflow进阶实现
  6. 太监式的自主知识产权研发特色 (Z)
  7. 【DP】方格计数(nowcoder 20107-B)
  8. JavaOne和OOW 2015总结
  9. 利用cookies实现对弹出窗口频率的控制
  10. ZF环境要求及如何配置
  11. 等保测评--网络安全等级保护实施指南
  12. 机器学习流程及详细内容(4)
  13. eclipse多线程调试
  14. Python 用均匀分布验证中心极限定理
  15. tableau和oracle dv,比较Power BI和Tableau,好比用奔驰对比奥迪
  16. 最新微信公众号文章数据导出软件工具
  17. U盘启动模式USB-HDD/HDD+/ZIP/ZIP+/CDROM/FDD的区别
  18. dw2019连接mysql数据库_VS 2019 连接MySQL数据库配置记录
  19. 开源Go语言数值算法库 An open numerical library purely based on Go programming language
  20. 二次规划及qpoases简要介绍

热门文章

  1. PHP正则表达式提取超链接及其标题
  2. windows和centos7实现文件共享之samba
  3. 学习日报 day03 实体与标识符 变量与数据类型
  4. python随堂技术演讲时间表
  5. Linux系统可卸载内核模块完全指南(上)
  6. PostgreSQL 逻辑订阅 - 给业务架构带来了什么希望?
  7. js获取表单文本框中的值
  8. jquery导航,按钮等特效 - apycom
  9. Linux命令的学习(目前需要的,紧急)
  10. Qt 第二章 创建对话框--快速设计对话框(2)