博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker 笔记3 dockerfile语法及最佳实践
阅读量:6577 次
发布时间:2019-06-24

本文共 1158 字,大约阅读时间需要 3 分钟。

FROM

FROM scratch  # 制作base imageFROM centos  # 使用base imageFROM ubuntu:14.04复制代码

LABEL

  • 类似代码注释

RUN

RUN yum update && yum install -y vim \    python-dev  # 反斜线换行复制代码

因为每运行一次RUN,image都会生成新的一层,避免无用分层,合并多条命令成一行

WORKDIR

  • 类似cd命令,指定工作目录
WORKDIR /root复制代码

尽量使用绝对目录

WORKDIR /test # 如果没有会自动创建test目录WORKDIR demoRUN pwd   # 输出结果应该是 /test/demo复制代码

ADD COPY 两者类似,把本地文件添加到docker image中 区别:ADD 不光添加到指定目录,而且会解压 大部分情况,COPY优于ADD 添加原创文件/目录,使用curl或wget

ADD hello /复制代码
ADD test.tar.gz /  # 添加到根目录并解压复制代码
WORKDIR /rootADD hello test/  # /root/test/hello复制代码

ENV 尽量使用ENV,增加可维护性

ENV MYSQL_VERSION 5.6 # 设置常量RUN apt-get install -y mysql=server= "${MYSQL_VERSION}" \    && RM -RF /var/lib/apt/list/*  #引用常量复制代码

RUN:

  • 执行命令并创建新的Image layer

ENTRYPOINT:

  • 让容器以应用程序或者服务的形式运行
  • 不会被忽略,一定会执行
  • 最佳实践:写一个shell脚本作为entrypoint
COPY docker-entrypoint.sh /usr/local/binENTRYPOINT ["docker-entrypoint.sh"]EXPOSE 27017CMD ["mongod"]复制代码

CMD:设置容器启动时默认执行的命令和参数

  • 如果docker run指定了其他命令,CMD命令将被忽略
  • 如果定义了多个CMD,只有最后一个会执行
FROM centosENV name DockerCMD echo "hello $name"复制代码

运行以上Dockerfile

$ docker run [image] # 输出 hello Docker$ docker run -it [image] /bin/bash # 不会输出 hello Docker复制代码

VOLUME EXPOSE

可参考docker—library 学习

转载地址:http://epfno.baihongyu.com/

你可能感兴趣的文章
关于图片或者文件在数据库的存储方式归纳
查看>>
ADO.NET笔记——使用DataSet返回数据
查看>>
Python脚本日志系统
查看>>
TCP(Socket基础编程)
查看>>
RowSet的使用
查看>>
每日一记--cookie
查看>>
IOS 7 Study - UISegmentedControl
查看>>
八、通用类型系统
查看>>
JQuery的ajaxFileUpload的使用
查看>>
关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法...
查看>>
ios 控制器的生命周期
查看>>
Python笔记8----DataFrame(二维)
查看>>
JavaScript 特殊效果代码
查看>>
【?】codeforces721E Road to Home(DP+单调队列)
查看>>
MySQL 仅保留7天、一个月数据
查看>>
增加临时表空间组Oracle11g单实例
查看>>
Diff Two Arrays
查看>>
stark组件(1):动态生成URL
查看>>
下拉菜单
查看>>
[清华集训2014]玛里苟斯
查看>>