Dockerfile相关关键词解释

1、FROM(指定基础镜像)
	构建指令,Docker中必须使用FROM命令,必须指定且需要在Dockerfile其他指令的前面。后续的指令都依赖于该指令指定的image。FROM指令指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。
	FROM ubuntu
	FROM ubuntu:15.10
2、MAINTAINER(指定镜像创建者信息)
	构建指令,用于将image的制作者相关的信息写入到image中,一般输入名字和电子邮箱即可。当我们对该image执行docker inspect命令时,输出中有相应的字段记录该信息。
	MAINTAINER HUi20,<123456789@163.com>
3、RUN(安装软件用)
	构建指令,在FROM中设置的镜像上运行脚本或命令,在RUN可以运行任何被基础image支持的命令。如基础image选择了ubuntu,那么软件管理部分只能使用ubuntu的命令。
	RUN git clone https://github.com/docker/docker.git
	RUN ["/user/local/bin/hello","--help"]
4、CMD(设置container启动时执行的操作)
	设置指令,用于容器启动时指定的操作。该操作可以是执行自定义脚本,也可以是执行系统命令。一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD.
	CMD ["<可执行文件>","<形式参数1>","<形式参数2>""] 无shell直接运行时设置形式参数
	CMD <命令> <形式参数1>,<形式参数2>  用shell运行命令
	CMD ["<形式参数1>","<形式参数2>"]  当Dockerfile指定了ENTRYPOINT。
5、ENTRYPOINT(设置container启动时执行的操作)
	设置指令,指定容器启动时执行的命令。但是一个Dockerfile中只能有一条ENTRYPOINT命令,可以多次设置,但是只有最后一个有效。
	ENTRYPOINT <命令> 参数1 参数2  用shell运行命令
	ENTRYPOINT ["<可执行文件>", "<形式参数1>", "<形式参数2>"]无shell直接运行
	ENTRYPONIT可以在docker run命令中使用 -- entrypoint选项进行设置。若设置了 --entrypoint选项,则忽略Dockerfile文件中的ENTRYPONIT
6、EXPOSE(指定容器需要映射到宿主机器的端口)
	设置指令,该指令会将容器中的端口映射成宿主机器中的某个端口。
	EXPOSE <端口号>
	EXPOSE只用于与主机进行连接,并不对外暴露。若想讲端口号暴露在外,需要使用docker run命令的-p、-P选项
7、ENV(用于设置环境变量)
	构建指令,在image中设置一个环境变量。
	ENV <环境变量> <值>  使用环境变量时,要添加$符号
	设置了后,后续的RUN命令都可以使用,container启动后,可以通过docker inspect查看这个环境变量。
	也可以通过在docker run --e  <环境变量>=<值>时设置或修改环境变量。
8、ADD(向镜像添加文件)
	构建指令,所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0。
	ADD <要复制文件的路径> <文件在镜像中的路径>  
	注意:
		<src>以上下文目录为基准,不能使用上下文以外的文件、目录或绝对路径
		<src> 可以是Dockerfile所在目录的一个相对路径,也可以是一个URL,还可以是一个tar文件(自动解压为目录)
		如果<src>是文件且<dest>中不使用斜杠结束,则会将<dest>视为文件,<src>的内容会写入<dest>
		如果<src>是文件且<dest>中使用斜杠结束,则会<src>文件拷贝到<dest>目录下
		<dest> 是容器中的绝对路径
		如果是一个目录,那么会将该目录下的所有文件添加到container中,不包括目录
		如果文件是可识别的压缩格式,则docker会帮忙解压缩(注意压缩格式)
	ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。
9、COPY(向镜像添加文件)
	复制本地主机的 <src> (为Dockerfile所在目录的相对路径)到容器中的 <dest>
	使用COPY添加文件时,不会解压缩,也不能使用文件URL
	从上面的定义中可获知,src可以是Dockerfile所在目录的一个相对路径,但在实际操作中,只有与Dockerfile文件在同一目录的文件或目录可以成功的使用ADD <src> <dest>
	如果文件或目录不与Dockerfile在同一目录会提示 no such file or directory,如:(ADD ../test2 /data/code/nginx),从Dockerfile所在目录通过 cd ../test2可以到达test2
	COPY <要复制文件的路径> <文件在镜像中的路径>
	src要复制文件的路径
	dest文件在镜像中的路径
	注意:
		<src>以上下文目录为基准,不能使用上下文以外的文件、目录或绝对路径
		<src>不仅可以设置为文件,还可以设置为目录。设置为目录时,会复制目录下的所有文件。另外,也可以使用通配符只复制特定文件
		<src>不可以设置为网络文件的URL
		压缩文件不会解压缩,直接复制
		<dest>必须设置为绝对路径。并且,若路径以/结尾,则创建目录并将文件复制到该目录
		添加当前目录时,.dockerignore文件中设置的文件与目录会被排除在外
10、VOLUME(指定挂载点)
	设置指令,使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器使用。,当容器关闭后,所有的更改都会丢失。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。可以将本地文件夹或者其他container的文件夹挂载到container中。
	VOLUME ["<容器目录1>","<容器目录2>"]  
	VOLUME <容器目录>
	使用VOLUME不能与主机的特定目录进行连接
	若想连接数据卷与主机的特定目录,则必须在docker run 命令中使用-v选项
	选项格式为:-v <主机目录>:<容器目录>
11、USER(设置container容器的用户)
	设置指令,设置启动容器的用户,默认是root用户。该用户会应用于RUN、CMD、ENTRYPOINT
	格式:
		使用格式为USER <账号用户名>
	USER后面的所有RUN、CMD、ENTRYPOINT都会得到应用,中间可以设置其他用户以更换用户
12、WORKDIR(切换目录)
	切换目录用,设置指令,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效。
	WORKDIR <路径>
	设置WORKDIR时也可以用相对路径替代绝对路径。若使用相对路径,先要以设置的WORKDIR路径为基准更改目录。最初基准为/
13、ONBUILD(在子镜像中执行)
	ONBUILD 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行
	ONBUILD <Dockerfile命令><Dockerfile命令的形式参数> 
	需要再次创建example镜像后,使用docker run命令才会执行ONBUILD设置的指令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值