Docker学习--了解Dockerfile

一、什么是Dockerfile

Dockerfile是为了快速的构建docker image而设计的,当你使用docker命令的时候,docker会读取当前目录下的命名为Dockerfile(首字母大写)的纯文本文件并执行里面的指令构建出一个docker image。

Dockerfile由一行行的命令语句组成,并且支持以#开头的注释行。指令是不区分大小写的,但是通常我们都大写。

一般的,我们将Dockerfile分为四部分:

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令

二、Dockerfile常用指令介绍

1、FROM

格式:FROM或者FROM:
FROM必须是Dockerfile里的第一条指令(除注释外),后面跟有效的镜像名,如果在本地仓库没有该镜像,就会去远程仓库拉取。然后的指令在FROM的镜像中执行。

2、MAINTAINER

格式:MAINTAINER
指定维护者的信息。

3、RUN

格式:RUNRUN["", "", ""]
运行命令,命令较长时可以使用""换行。

4、CMD

格式:CMD ["","",""]
CMD指定容器启动时执行的命令,每个Dockerfile只能有一条CMD命令,如果指定了多条,只能最后一条会被执行。如果你在启动容器的时候也指定了命令,那么会覆盖Dockerfile构建的镜像里面的CMD命令。

5、ENTRYPOINT

格式:ENTRYPOINT ["","",""]
和CMD类似都是配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。每个Dockerfile文件中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。ENTRYPOINT没有CMD的可替换特性,也就是你启动容器的时候增加运行的命令不会覆盖ENTRYPOINT指定的命令。

6、USER

格式:USER daemon
指定运行容器的用户名和UID,后续的RUN指令也会使用这里指定的用户。

7、EXPOSE

格式:EXPOSE [...]
设置Docker容器内部暴露的端口号,在启动容器时增加-p或-P参数做端口映射。

8、ENV

格式:ENV
设置环境变量,会被RUN命令使用,容器启动时这些环境变量都会被指定。

9、ADD

格式:ADD
复制指定的文件到容器的文件系统中。所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0
如果文件是可识别的压缩格式,那么docker会自动解压。可以访问网络资源,类似wget

10、COPY

格式:COPY
复制命令,功能类似ADD,但是不会自动解压文件,也不能访问网络资源。

11、VOLUME

格式:VOLUME ["/mnt"]
将本地文件夹或者其他容器的文件夹挂载到容器当中,一般用来保存重要的数据。

12、WORKDIR

格式:WORKDIR /path/to/workdir
切换目录,为后续的RUN、CMD、ENTRYPOINT指令配置工作目录。可以多次切换(相当于cd命令),也可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。

13、ONBUILD

格式:ONBUILD [INSTRUCTION]
配置当前创建的镜像作为其它新创建的镜像的基础镜像时,所执行的操作指令。

参考文章:
http://k8s.unixhot.com/docker/docker-image.html#dockerfile1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值