dockerfile简介:
通过dockerfile文件,可以帮助我们自助创建镜像,并且能够自定义创建过程,它是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像
优点:
- 像编程一样,支持分层构建以及缓存
- 可以快而准确的重新创建镜像
- 方便维护和升级
- 便于持续继承
- 可以在任何地方快速构建镜像
- Dockerfile 创建(可以选择合适的基础镜像,或者自己写)
*基于centos镜像
- 首先规划存放dockerfile的文件目录结构
- 例如:mkdir-p ***/***
- 进入所创建的目录下
- Vim Dockerfile(D大写,创建时默认读取)
- 可以自己写入命令
- 写好之后需要一个index.html
- Echo 仓库名>index.html
- 开始构建
- Docker build -t 镜像名:标签
- 查看发现构建成功,然后就可以启动容器啦
- Dockerfile 指令
- from(指定基础镜像)
- 格式:FROM<image>或FROM<image>:<tag>
- run(在命令前加run)
- 格式:RUN < command >或RUN[ "executable" , "param1" , "param2" ]
- copy(复制)
- add(跟copy类似,但比copy功能多)
- 格式:ADD <src>... <dest>
- workdir(设置当前工作目录,类似于cd)
- 格式:WORKDIR /path/to/workdir
- cmd(指定容器启动后要干的事情)
- CMD [ "executable" , "param1" , "param2" ] 使用 exec 执行
- Entrypoint(配置容器启动后执行的命令)
- ENTRYPOINT [ "executable" , "param1" , "param2" ]
- Env(设置环境变量)
- 格式:ENV<key> <value>
- Expose(指定对外端口号)
- 格式:EXPOSE<port> [<port>...]
- maintained(指定维护者信息)
- MAINTAINER <name>
- volume(设置卷,挂载主机目录)
- 格式:VOLUME [ "/data" ]
- from(指定基础镜像)
- 优化准则
- 选择合适的基础镜像
- 优化指令顺序
- 合并指令
- 删除多余的文件,清理没用的中间结果
- 使用dockerignore
注意:
1、不能忽视dockerfile的优化
2、不能为了优化而优化,要先以满足业务目标为准,选择合适的基础镜像,或者创建符合我们需求的镜像