可以前往我的指引页面,里面有更多docker的笔记:
目录
DockerFile解析
是什么
构建三步骤
文件长什么样子的?
dockerFile构建过程解析
docker执行dockerfile执行的大致流程
dockerfile体系结构 (保留字指令)
DockerFile解析
是什么
dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本
注意点:
- 文件没有后缀,名字就是Dockerfile
- 命令约定全部使用大写,如
RUN,ADD,FROM
- 第一条命令必需是FROM,作用是指定在哪个基础镜像上创建镜像。
- 注释以
#
形状
构建三步骤
1 编写dockerfile文件
2 dockk build
3 docker run
文件长什么样子的?
# volume test
FROM centos
VOLUME ["/dataVolumeContainer1", "dataVolumeContainer2"]
CMD echo "finished,------success1"
CMD /bin/bash
dockerFile构建过程解析
1 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
2 指令按照从上到下,顺序执行
3 # 表示注释
4 每条指令都会创建一个新的镜像层,并对镜像进行提交
docker执行dockerfile执行的大致流程
1 docker从基础镜像运行一个容器
2 执行一条指令并对容器做出修改
3 执行类似docker commit 的操作提交一个新的镜像层
4 docker再基于刚提交的镜像运行一个新容器
5 执行dockerfile中的吓一条指令直到所有指令都执行完成
dockerfile体系结构 (保留字指令)
1 FROM
基础镜像,当前新的镜像时基于那个镜像的?
2 MAINTAINER
镜像维护者的姓名和邮箱地址
3 RUN
容器构建是需要运行的命令
4 EXPOSE
当前镜像对外暴露出的端口号
5 WORKDIR
登录镜像之后的工作目录在哪里?没指定就是/目录为默认
6 ENV
用来再构建镜像过程中设置环境变量
例子:
ENV MY_PATH /user/mytest
这个环境变量可以再后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样;也可以在其他指令中直接使用这些环境变量
如:WORKDIR $MY_PATH
7 ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
8 COPY
类似ADD,拷贝文件和目录到镜像中,将从构建上下文件目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
例子
COPY src dest
COPY ["src", "dest"]
9 VOLUME
容器数据卷,用于数据的持久化工作
10 CMD
指定一个容器启动时候要运行的命令
dockerfile中可以多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换
11 ENTRYPOINT
指定一个容器启动时候要运行的命令
ENTRYPOINT 的目的和CMD一样,都是在指定容器启动程序及参数,但不一样的话,是追加,不会替换
12 ONBUILD
当构建一个被继承的dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发