Dockerfile 由一行行命令语句组成,并且支持以 # 开头的注释行。

一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

例如

# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] .. # Base image to use, this must be set as the first line
FROM ubuntu # Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER docker_user docker_user@email.com # Commands to update the image
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf # Commands when creating a new container
CMD /usr/sbin/nginx

其中,一开始必须指明所基于的镜像名称,接下来推荐说明维护者信息。

后面则是镜像操作指令,例如 RUN 指令,RUN 指令将对镜像执行跟随的命令。每运行一条 RUN 指令,镜像添加新的一层,并提交。

最后是 CMD 指令,来指定运行容器时的操作命令。

下面是一个更复杂的例子

# Nginx
#
# VERSION 0.0.1 FROM ubuntu
MAINTAINER Victor Vieux <victor@docker.com> RUN apt-get update && apt-get install -y inotify-tools nginx apache2 openssh-server # Firefox over VNC
#
# VERSION 0.3 FROM ubuntu # Install vnc, xvfb in order to create a 'fake' display and firefox
RUN apt-get update && apt-get install -y x11vnc xvfb firefox
RUN mkdir /.vnc
# Setup a password
RUN x11vnc -storepasswd 1234 ~/.vnc/passwd
# Autostart firefox (might not be the best way, but it does the trick)
RUN bash -c 'echo "firefox" >> /.bashrc' EXPOSE 5900
CMD ["x11vnc", "-forever", "-usepw", "-create"] # Multiple images example
#
# VERSION 0.1 FROM ubuntu
RUN echo foo > bar
# Will output something like ===> 907ad6c2736f FROM ubuntu
RUN echo moo > oink
# Will output something like ===> 695d7793cbe4 # You᾿ll now have two images, 907ad6c2736f with /bar, and 695d7793cbe4 with
# /oink.

最新文章

  1. PowerDesigner的使用一
  2. JVM学习总结二——垃圾回收算法
  3. 实用C51编程的高级技巧(C51编程)
  4. Windows DIB文件操作具体解释-5.DIB和调色板
  5. 可以部署在广域网执行QQ高仿版 GG2014 (源代码)
  6. git 使用系列(二)---- 分支和合并
  7. 金明的预算方案 NOIP 2006 提高组
  8. Linux 文本去重 之 命令sort 与 uniq
  9. MacBook Pro App Store无法下载和更新软件解决方案
  10. mysql的分表与分区的区别
  11. Ubuntu里Eclipse关联Jdk
  12. 20165232 预备作业3 Linux安装及学习
  13. Django学习手册 - ORM 单表数据获取
  14. js 压缩上传的图片方法(默认上传的是file文件)
  15. 在python里调用java的py4j的使用方法
  16. Git入门基础详情教程
  17. Java排序之升序与降序
  18. Java的学习04
  19. Laravel学习之旅(一)
  20. java处理金证中登查询图片二进制流问题

热门文章

  1. 关于if后面直接加上参数名,不加条件的用法
  2. jmc远程连接windows环境tomcat
  3. 20180117MySQL出现Waiting for table metadata lock的原因以及解决方法
  4. contenteditable 插入及粘贴纯文本内容
  5. webpack的学习准备工作
  6. JavaScript数据结构与算法(七) 双向链表的实现
  7. [LeetCode] Range Addition II 范围相加之二
  8. 关于自定义view--实现自定义水波纹效果
  9. [Codeforces 100633J]Ceizenpok’s formula
  10. [POJ 3243]Clever Y