FROM    # FROM scratch,  FROM centos, FROM ubuntu:latest

LABEL

RUN  # 每运行一次RUN,image都会生成新的一层,为了美观,避免无用分层,尽量合并多条命令为一条, 比如 yum install vim && yum install gcc, 反斜线换行,最后清理cache  rm -rf /var/lib/apt/lists/*

WORKDIR  # 设定当前目录,类似linux cd, 没有目录会自动创建目录,  尽量是用绝对路径,不要使用RUN cd

ADD  # 添加文件,  和copy类似,但是add可以解压缩, 大部分情况COPY优于ADD, 添加远程文件,使用curl或者wget

ENV  # 设置环境变量, 增加可维护性

VOLUME

EXPOSE  # 暴露端口

CMD  # 设置容器启动后默认执行的命令; 如果docker run指定了其它命令,CMD命令会被忽略; 如果定义了多个CMD, 只有最后一个会执行

ENTRYPOINT  # 容器启动时运行的命令; 容器以应用程序或者服务的形式运行; 不会被忽略,一定会执行; 最佳实践: 写一个shell脚本座位entrypoint, 很多官方的docker都用entrypoint启动服务

RUN 和 CMD有shell格式和Exec格式

shell格式

RUN apt-get install -y vim

CMD echo "hello world"

Exec格式

RUN ["yum", "install", "-y", "vim" ]

CMD ["bin/echo", "hello world"]

Shell格式,所有的命令,在一个shell里面执行,但是Exec格式,只是单纯执行了一个命令,这个命令的环境变量不受上一条命令的影响

ENTRYPOINT和CMD配合,可以在docker run的时候接受参数

FROM ubuntu:14.04
RUN apt-get update && apt-get install -y stress
ENTRYPOINT ["/usr/bin/stress"]
CMD []  # 这里可以接收docker run 传的参数

docker build -t test/command .

docker run test/command --vm 1 --verbose  # --vm 1 --verbose即是接收的参数

最新文章

  1. Node 连接Mysql并进行增删改查
  2. 当pip install不能正确安装的时候,try easy_install
  3. Python编写的Linux网络设置脚本,Debian Wheezy上测试通过
  4. HDU 4831 Scenic Popularity (段树)
  5. Python资料汇总(建议收藏)
  6. Android使用HttpClient请求服务器代码优化版
  7. vue init初始化项目后 npm run dev报错 10% building modules 1/1 modules 0 activeevents.js:182 throw er; // Unhandled 'error' event
  8. Redis学习笔记(2)——Redis的下载安装部署
  9. ReactJS之遍历对象的方法
  10. SkylineGlobe7.0.1版本 主页面如何和Popup里面的嵌入页面相互传值
  11. 3年java工作经验必备技能
  12. 爆炸销毁动画组件Explosions
  13. sql需注意事项
  14. 利用nodejs安装并运行express的三个坑
  15. Android数据存储:SQLite
  16. Keras 实现一个简单GAN
  17. RFS实例登录126邮箱/利用cookie登陆百度
  18. 《C++ Primer Plus》读书笔记之六—函数探幽
  19. python安装mysql
  20. CentOS查看操作系统信息(重要)

热门文章

  1. kubeadm 如何将节点加入集群
  2. bzoj4589-Hard Nim【FWT】
  3. Jmeter压测学习4--XPath提取器
  4. 深入浅出WPF-08.Event( 事件)01
  5. 鲲鹏展翅|SphereEx 获华为鲲鹏技术认证
  6. web_security学习路线
  7. CF280C Game on tree(期望dp)
  8. windows10安装MySQL8.0.27
  9. 《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)
  10. SpringCloud微服务实战——搭建企业级开发框架(二):环境准备