用前端姿势玩docker【二】dockerfile定制镜像初体验
前言
书接上文,关于dockerfile指令的api在此处不做赘述,在此只是记录下注意事项: ‘示坑以埋之’。
配置指令
FROM
- dockerfile必须以此开头
- 一个dockerfile可执行添加多个FROM
ARG
- 单纯的docker build执行过程的局部变量,在容器内部会被销毁
- 常用来定义常量数据,例如版本等等
LABEL
- label的作用只是用来便于做搜索推荐、提示等,类似元信息、元标签。
- 多个label多行展示
LABEL name=tate
LABEL area=China
EXPOSE
- 只声明镜像内监听的服务端口,不做映射处理
EXPOSE 22 80 8443
ENV
- 环境变量,在后续RUN中被调用,容器中会被保留。
ENV APP_HOME=/usr/local/app - 若遇到相同变量,在Run命令中会被覆盖掉
docker run --env APP_HOME=/usr/local/app
ENTRYPOINT
# ENTRYPOINT ["executable", "paraml ", "param2"]: exec 调用执行;
# ENTRYPOINT command param 1 param2: shell 中执行。
- 指定镜像的默认入口命令,该入口命令会在启动容器时作为根命令执行, 所有传人值作为该命令的参数。
- CMD指定的值将作为根命令的参数传递
- 单个dockerfile中定义多个入口时,只有最后一个生效。
- 同样可被run中的 --entrypoint 参数覆盖
VOLUME
- 创建数据挂载点
VOLUME ["/data"]
USER
- 指定运行容器的user,需要获取管理员临时权限时使用gosu命令
WORKDIR
- 为后续的 RUN CMD ENTRYPO INT 指令配置工作目录
- 多行命令执行结果累加, 建议使用绝对路径
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
# 结果为 /a/b/c
ONBUILD
- 基于所生成镜像创建子镜像时,自动执行的操作指令。
- 使用 docker build 命令创建子镜像 childImage 时( FROM ParentImage ),会首先执行 Parent mage 配置的 ONBUI LD,相当于在子镜像的dockerfile中添加相应的指令。
- 主要用于创建专门用于自动编译、检查等操作的基础镜像。
STOPSIGNAL
- 指定所创建镜像启动的容器接收退出的信号值
HEALTHCHECK
- 配置所启动容器如 进行健康检查
HEALTHCHECK [OPTIONS] CMD command :根据所执行命令返回值是否为0判断
HEALTHCHEC NONE : 禁止基础镜像中的健康检查
OPTION 支持如下参数
—interva=DURAT (d e fault: 30s ):过多久检查一次
—timeout=DURATION (default: 30s): 每次检查等待结果的超时;
—retries=N (default:3 ):如果失败了,重试几次才最终确定失败
SHELL
- 指定其他命令使用 shell 时的默认 shell 类型
- 默认值
SHELL ["/bin/sh", "-c"] - windows 系统中,shell 使用了“\”作为分隔符,建议在 Dockerfile 开头添加#escape=' 指定转义符
操作指令
RUN
- 格式为 RUN <command >或 RUN [ "executable " , "paraml", "param2"] 注意意后者指令会被解析为 JSON 数组,因此必须用双引号,前者默认将在 shell 终端中运行命令,即 '/bin/bash -c' 后者则使用 exec 执行,不会启动 shell 环境。
- 指定使用默认终端
RUN ["/bin/bash", "-c", "echo tate"] - 每执行一条RUN命令, 镜像就会被追加一个镜像层,其实就是一个RUN命令就是一个独立的执行结果
CMD
- CMD 指令用来指定启动容器时默认执行的命令
- 支持三种格式:
- CMD ["executable", "param1", "param2"]:相当于执行 executable param1 param2, 此方式较为推荐;
- CMD command paraml param2 :在默认的 Shell 中执行,提供给需要交互的应用;
- CMD ["param1", "param2"]: 提供给 ENTRYPOINT 的默认参数
ADD
- 添加指定路径下的内容到容器中 ADD
- src可为文件目录,也可为url,或一个tart文件(自动解压为目录)
- dest可以使绝对路径,也可以是相对于当前工作目录的相对路径
COPY
- 复制内容到路径 COPY , 多用于本地目录为源目录时。
- src 为dockerfile所在目录的相对路径
- 目标路径不存在时会自动创建
- 路径支持正则表达式
体验尝鲜
基于alpine定制
FROM alpine
ARG author=tate
RUN touch /root/docker.txt
COPY copy.sh /root/
用前端姿势玩docker【二】dockerfile定制镜像初体验的更多相关文章
- 用前端姿势玩docker【四】基于docker快速构建webpack的开发与生产环境
目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...
- 用前端姿势玩docker【五】快速构建中类Unix系统与Windows系统的差异化处理
目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...
- Docker用Dockerfile定制镜像
用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那之前提示的无法重复的问题 ...
- 用前端姿势玩docker【一】Docker通俗理解常用功能汇总与操作埋坑
前言 首先一句话表达个人对docker的理解:与传统虚拟技术基于硬件及物理资源的虚拟化相比,Docker更加轻量化,docker为基于操作系统或内核级别的虚拟化,并且提供了从各种机制与操作以满足从开发 ...
- 用前端姿势玩docker【三】基于nvm的前端环境构建技巧
前言 安装docker啥的就不说了,这里重点强调一下,docker的环境问题.本人的环境: 虚拟机centos => docker => NAT => container 因为需要不 ...
- Docker 学习笔记(二):Dockerfile 定制镜像
镜像的定制实际上就是定制每一层所添加的配置.文件. 如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题.镜像构建透明性的问题.体积 ...
- Docker Dockerfile 定制镜像
使用 Dockerfile 定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么无法重复的问题 ...
- Dockerfile定制镜像
一.Dockerfile是什么? 镜像定制实质就是定制每一层所添加的配置.文件. Dockerfile就是一个脚本来构建和定制镜像,把每一层的修改.安装.构建.操作都写入脚本.以此来解决体积.镜像构建 ...
- 利用dockerfile定制镜像
利用dockerfile定制镜像 镜像的定制就是定制每一层所添加的配置.文件.如果可以吧每一层修改.安装.构建.操作的命令都写入到一个脚本,用脚本来构建.定制镜像,这个脚本就是dockerfile. ...
随机推荐
- Spring Boot入门系列(十五)Spring Boot 开发环境热部署
在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译.然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是影响开发效率.其实Spring Boot的项目碰到这种情况, ...
- Java操作RockeMQ
RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给Apache基金会,已经于2016年11月成为 Apache 孵化项目,相信RocketMQ的未来会发挥着越来越大的作用,将 ...
- [ C++ ] 勿在浮沙筑高台 —— 内存管理(18~31p) std::alloc
部分内容个人感觉不是特别重要,所以没有记录了.其实还是懒 embedded pointers 把对象的前四字节当指针用. struct obj{ struct obj *free_list_link; ...
- 入门大数据---Redis集群分布式学习
Redis是什么? 官方介绍: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列( ...
- Python分析最近大火的网剧《隐秘的角落》,看看网友们有什么看法
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 估计最近很火的连续剧<隐秘的角落>大家趁着端午假期都看过了吧? ...
- Centos7-Docker1.12开启守护进程(远程调用)
本文讲述了Docker1.12.6在Linux下开启守护进程(远程调用),理论上来说其他版本也是一样的改法,博主参考很多都是巨坑,综合自己实战分享给大家,如有错误请留言; - 修改配置 1.修改 do ...
- html实体引用
原义字符 等价字符引用 < < > > " " ' ' & &
- Oracle Solaris 10下gdb安装(附安装包)
文章目录 1. 背景说明 2. gdb相关包 3. gdb安装 3.1 上传资源 3.2 解压 3.3 安装 3.4 环境变量 4. 位数确认 5. 验证可用性 1. 背景说明 本文承接Oracle ...
- PHPstorm常用快捷键(Windows)
本文整理本人在日常工作中使用最频繁的PHPstorm快捷键,以作为自己的总结备忘,也希望能够帮到有需要的小伙伴. 以下快捷键大致按本人的使用频率从高到低来介绍. 1.复制.粘贴 Ctrl+c .Ctr ...
- composer更新命令及常用命令
原文地址:https://www.wjcms.net/archives/composer更新命令及常用命令 composer作为php的包依赖管理工具,开发者将开发的工具包上传,然后使用者能很方便的使 ...