docker学习笔记-05:DockerFile解析
一、DockerFile是什么
1、DockerFile是用来构建docker镜像的构建文件,是由一系列参数和命令构成的脚本。
2、构建三步骤:
手动编写一个dockerfile文件,然后直接docker build命令执行,获得一个自定义的镜像,最后 docker run 创建一个容器实例。
二、centos的DockerFile
FROM scratch # centos的祖先
MAINTAINER The CentOS Project <cloud-ops@centos.org> # 作者的名字和邮箱
ADD c68-docker.tar.xz / # centos压缩包
LABEL name="CentOS Base Image" \
vendor="CentOS" \
license="GPLv2" \
build-date="2016-06-02" # 默认的命令,所以在启动容器时可加可不加
CMD ["/bin/bash"]
三、DockerFile构建过程解析
1、DockerFile内容基础知识:
(1)每条保留字指令都必须为大写字母且后面要跟随至少一个参数
(2)指令从上到下,顺序执行
(3)#表示注释
(4)每条指令都会创建一个新的镜像层,并对镜像进行提交
2、docker执行DockerFile的大致流程:
(1)docker从基础镜像运行一个容器
(2)执行一条指令并同时对容器进行修改
(3)执行类似docker commit的操作提交一个新的镜像层
(4)docker再基于刚提交的镜像运行一个新容器
(5)执行DockerFile中的下一条指令直到所有指令都执行完成
3、从应用软件的角度来看,DockerFile、Docker镜像和Docker容器分别代表了软件的三个不同阶段
- DockerFile是软件的原材料
- Docker镜像是软件的交付品
- Docker容器则可以认为是软件的运行态
DockerFile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署和运维,三者缺一不可。
4、关系:DockerFile----build---->Docker镜像-----run---->Docker容器
四、DockerFile体系结构(保留字指令)
1、FROM 基础镜像,也就是当前新镜像是基于哪个基础镜像的
2、MAINTAINER 镜像作者的姓名和邮箱地址
3、RUN 构建镜像的过程中执行一个具体的命令
4、EXPOSE 当前容器实例对外暴露的端口
5、WORKDIR 制定在创建容器后,终端默认登录的进来工作目录
6、ENV 用来在构建镜像过程中设置环境变量 如:ENV MY_PATH /usr/mytest 变量名为 MY_PATH,变量值为 /usr/mytest
7、ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
8、COPY 类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<原路劲>的文件/目录复制到新的一层的镜像内的<目标路劲>位置
9、VOLUME 容器数据卷,用于数据保存和持久化工作
10、CMD 指定一个容器启动时要运行的命令,DockerFile中可以有多个CMD指令,但只有最后一个生效。且如果docker run 后面有命令参数,那么CMD的会被docker run后面的替换掉
11、ENTRYPOINT 同CMD类似,也指定一个容器启动时要运行的命令,但不同在于,如果docker run 后面由命令参数,那么不会覆盖,而是追加
12、ONBUILD 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD被触发。
docker学习笔记-05:DockerFile解析的更多相关文章
- Docker学习笔记三 Dockerfile 指令 定制镜像
本文地址:https://www.cnblogs.com/veinyin/p/10412079.html 镜像是分层存储的,每一层都是独立存在的,修改当前层并不会修改其依赖的上一层,删除某一层也只是 ...
- Docker学习笔记之Dockerfile
Dockerfile的编写格式为<命令><形式参数>,命令不区分大小写,但一般使用大写字母.Docker会依据Dockerfile文件中编写的命令顺序依次执行命令.Docker ...
- docker学习笔记-05:Docker安装mysql和redis
一.安装mysql 1.docker hub 上查找mysql镜像 docker search mysql 2.从docker hub (使用阿里云加速器)拉取mysql镜像到本地标签为5.6 doc ...
- Docker学习笔记总结
Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/ 一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...
- docker学习笔记(3)- 镜像
简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...
- docker学习笔记1 -- 安装和配置
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...
- docker~学习笔记索引
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...
- 机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归
机器学习实战(Machine Learning in Action)学习笔记————05.Logistic回归 关键字:Logistic回归.python.源码解析.测试作者:米仓山下时间:2018- ...
- Docker学习笔记 — Docker私有仓库搭建
Docker学习笔记 — Docker私有仓库搭建 目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2 和Mavan的管理一样,Dockers ...
随机推荐
- 基于 VS2019 配置 opencv4.x
创建新项目 添加主函数文件 配置 注意,如果直接使用项目的属性去配置,那么创建新的项目的时候,还需要再配置一遍,在属性管理器里配置,创建新项目的时候,会自动应用 接下来,开始为软件配置目录和附加项.右 ...
- Maven学习笔记:POM标签大全详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 洛谷P1060开心的金明(滚动数组优化)
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NNN元钱就行”. ...
- JAVA接口测试类
package etcom.servlet; import java.io.BufferedReader; import java.io.InputStreamReader; import java. ...
- Nginx正则及 Location匹配!
1:Nginx location 规则匹配 ^~ 标识符匹配后面跟一个字符串.匹配字符串后将停止对后续的正则表达式进行匹配. 如:location ^~ /images/, 在匹配 ...
- SqlService 并发测试
使用Sql QueryStress 可输入需要的线程数量,执行次数,对SQL 语句或存储过程进行测试,可查看执行时间及资源耗用.
- P1017进制转化
P1017进制转化 也不知道为啥,这么简单的题困扰了我这么长时间 #include<cstdio> using namespace std; int m; //被除数= 除数*商 + 余数 ...
- 两台W7系统的电脑,A电脑可以ping通B电脑,B电脑ping不通A电脑。
https://zhidao.baidu.com/question/1946500242424659908.html 打开控制面板-系统和安全-防火墙-允许程序-文件和打印机共享(勾选) 局域网共享是 ...
- Java源码-集合-ArrayList
基于JDK1.8.0_191 介绍 在Java中,对于数据的保存和使用有多种方式,主要的目的是以更少的资源消耗解决更多的问题,数组就是其中的一种,它的特点是所有的数据都保存在内存的一段连续空间中, ...
- InnoDB中一棵B+树能存多少行数据
https://www.jianshu.com/p/3578beed5a68 https://www.cnblogs.com/tongongV/p/10952102.html InnoDB 存储引擎最 ...