Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。
Dockerfile 语法
在我们深入讨论Dockerfile之前,让我们快速过一下Dockerfile的语法和它们的意义。
什么是语法?
非常简单,在编程中,语法意味着一个调用命令,输入参数去让应用执行程序的文法结构。这些语法被规则或明或暗的约束。程序员遵循语法规范以和计算机 交互。如果一段程序语法不正确,计算机将无法识别。Dockerfile使用简单的,清楚的和干净的语法结构,极为易于使用。这些语法可以自我释义,支持注释。
Dockerfile 语法示例
Dockerfile语法由两部分构成,注释和命令+参数
一个简单的例子:
Dockerfile 命令
Dockerfile有十几条命令可用于构建镜像,下文将简略介绍这些命令。
FROM 命令
RUN 命令
RUN命令会在上面FROM指定的镜像里执行任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。
两种格式:
注释
使用 # 作为注释
如:
# VERSION 1.0</p>
<p># use the ubuntu base image provided by dotCloud
FROM ubuntu</p>
<p># make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update</p>
<p># install memcached
RUN apt-get install -y memcached
</div>
MAINTAINER 命令
MAINTAINER <name>
MAINTAINER命令用来指定维护者的姓名和联系方式
如:
ENTRYPOINT 命令
有两种语法格式,一种就是上面的(shell方式):
ENTRYPOINT echo "Welcome!"</p>
<p>root@tankywoo-docker:~# docker run 62fda5e450d5
Welcome!
</div>
USER 命令
比如指定 memcached 的运行用户,可以使用上面的 ENTRYPOINT 来实现:
EXPOSE 命令
EXPOSE 命令可以设置一个端口在运行的镜像中暴露在外
# VERSION 2.2</p>
<p># use the ubuntu base image provided by dotCloud
FROM ubuntu</p>
<p>MAINTAINER Victor Coisne victor.coisne@dotcloud.com</p>
<p># make sure the package repository is up to date
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update</p>
<p># install memcached
RUN apt-get install -y memcached</p>
<p># Launch memcached when launching the container
ENTRYPOINT ["memcached"]</p>
<p># run me