dkfile语法梳理
时间:2021-09-07
本文章向大家介绍dkfile语法梳理,主要包括dkfile语法梳理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
FROM 尽量使用官方得image作为base image !
FROM scratch #制作 base image
FROM centos #制作 base image
FROM ubuntu:14.04
LABEL Metadata 不可少
LABEL maintainer="year12@163.com"
LABEL version="1.0"
LABEL description="This is description"
RUN 为了美观,复杂的RUN 请用反斜线换行!避免无用分层,合并多条命令成一条。
RUN yum update && yum install -y vim \
python-dev #反斜线换行
RUN apt-get update && apt-get install -y perl \
pwgen --no-install-recommends && rm -rf \ qq
/var/lib/apt/lists/* #注意清理cache
RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'
WORKDIR ( 相当于cd , 不要用RUN cd ! 尽量使用绝对目录)
WORKDIR /root
WORKDIR /test # 如果没有会自动创建test目录
WORKDIR demo
RUM pwd #输出结果应该是 /test/demo
ADD and COPY (添加复制目录)
大部分情况,COPY优于ADD! ADD除了COPY还有额外功能(解压)
添加远程文件/目录请使用curl或者wget
ADD hello /
ADD test.tar.gz / #添加到根目录并解压
WORKDIR /root
ADD hello test # /root/test/hello
WORKDIR /root
COPY hello test/
ENV 尽量使用ENV增加可维护性
ENV MYSQL_VERSION 5.6
RUN apt-get install -y mysql-server="${MYSQL_VERSION}" \
&& rm -rf /var/lib/apt/lists/* #引用常量
VOLUME and EXPOSE 存储和网络
RUN 执行命令并创建新的Image Layer
CMD 设置容器启动后默认执行的命令和参数
容器启动时默认执行的命令
如果docker run指定了其他命令,CMD命令被忽略
如果定义了多个CMD,只有最后一个会执行
FROM centos
ENV name Docker
ENTRYPOINT ["/bin/bash","-c","echo hello $name"]
ENTRYPOINT 设置容器启动时运行的命令
让容器以应用程序或者服务的形式运行
不会被忽略,一定会执行
最佳实践:写一个shell脚本作为entrypoint
COPY docker-entrypoint.sh /usr/local/bin
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 27017
CMD ["mongod"]
# Shell格式
RUN apt-get install -y vim
CMD echo "hello wocker"
ENTRYPOINT echo "hello docker"
# Exec格式
RUN ["apt-get","install","-y","vim"]
CMD ["/bin/echo","hello docker"]
ENTRYPOINT ["/bin/echo","hello docker"]
Nice to see you all!
原文地址:https://www.cnblogs.com/year12/p/15238041.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel 中某一字段自增、自减的例子
- php统计数组不同元素的个数的实例方法
- PHP实现单条sql执行多个数据的insert语句方法
- PHP的JSON封装、转变及输出操作示例
- php 策略模式原理与应用深入理解
- 解决在Laravel 中处理OPTIONS请求的问题
- PHP使用观察者模式处理异常信息的方法详解
- php判断目录存在的简单方法
- 怎么优雅的使用 laravel 的 validator验证办法
- Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
- php设计模式之适配器模式原理、用法及注意事项详解
- php基于Redis消息队列实现的消息推送的办法
- tp5框架无刷新分页实现方法分析
- PHP与SQL语句写一句话木马总结
- golang实现php里的serialize()和unserialize()序列和反序列办法详解