Dockerfile中常用命令汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Dockerfile中常⽤命令汇总语法组成:
1 注释信息
2 指令---参数 [通常要⼤写|实质上不区分⼤⼩写]
3 顺序执⾏
4 第⼀个⾮注释⾏必须是from [基于那个基础镜像制作]
5 需要⼀个专⽤⽬录[⾃⼰创建]
6 ⾸字⽬必须⼤写---Dockerfile
7 制作镜像依赖到⽂件或者包组时,必须提前准备⾄专⽤⽬录下
.dockerignore file --每⼀⾏中定义⼀个忽略⽂件
--创建在⼯作⽬录中
例如:pam.d/su* .........................................................
dockerfile中的常⽤指令:
1 FROM ---指定基础镜像
基础镜像不存在会在Docker Hub上拉去
使⽤格式:
FROM <镜像>:[tag]
FROM <镜像>@digest[校验码]
当前主机没有此镜像时,会⾃动去官⽹HUB下载..............................................
2 MAINTANIER --提供Dockerfile 制作者提供本⼈信息
[逐渐废弃]
LABLE --替代MAINTANIER
具体使⽤:
LABLE maintainer="作者信息"
使⽤格式:
MAINTANIER "guowei <597599150@>" .......................................................
3 COPY --把宿主机中的⽂件复制到镜像中去!
⽂件要在Dockerfile⼯作⽬录
src 原⽂件
--⽀持通配符
--通常相对路径
dest ⽬标路径
--通常绝对路径
有空⽩字符隔开的字串需要⽤"",否则会被当做两个⽂件!
⽂件复制准则:
1 src必须是build上下⽂中的路径,不能是其⽗⽬录
2 如果src是⽬录,则其内部⽂件或⼦⽬录会被递归复制
但src⽬录⾃⾝不会被复制
3 如果指定了多个src,或在src中使⽤了通配符,则dest必须是⼀个
⽬录,且必须以/结尾
4 如果dest实现不存在,它将会被⾃动创建,这包括其⽗⽬录..............................................................
4 ADD --类似COPY命令
⽀持URL路径----如果可以访问⽹络的话,会访问⽹络下载
到本地然后打包进镜像!
操作准则:
1 如果src为URL且dest不以/结尾,则src指定的⽂件将被下载并
直接被创建为dest;如果dest以/结尾,则⽂件名URL指定的⽂件
将被直接下载并保存为dest/filename
2 如果是压缩包会被解压,但通过URL路径获取到的tar⽂件不会被展开
3 如果src有多个,或其间接或直接使⽤了通配符,则dest必须是⼀个以/结尾的⽬录路径,如果dest不以/结尾,则其被视为⼀个普通⽂件src的内容将被直接写⼊到dest中!
...............................................................
5 WORKDIR --指定⼯作⽬录
每次只会影响这个指令后续的指令
ADD nginx-1.14.2.tar.gz /usr/local/src/ --不受影响
WORKDIR /usr/local/src/
ADD nginx-1.14.2.tar.gz ./ --受影响
.............................................................
6 VOLUME --卷
只能定义docker管理的卷:
VOLUME /data/mysql
运⾏的时候会随机在宿主机的⽬录下⽣成⼀个卷⽬录!................................................................
7 EXPOSE 为容器打开指定要监听的端⼝以实现与外部通信
使⽤格式:
EXPOSE 80/tcp 23/udp
不加协议默认为tcp
使⽤-P选项可以暴露这⾥指定的端⼝!
但是宿主的关联⾄这个端⼝的端⼝是随机的!..............................................................
8 ENV
⽤于为镜像定义所需的环境变量,并可被Dockerfile⽂件中位于
其后的其它命令所调⽤
调⽤格式:
$A 或 ${A}
ENV <key> <value>
ENV <key>=<value>
第⼀种格式中,key之后的所有内容均会被其视作<value>的组成部分因此,⼀次只能设置⼀个变量!
第⼆种格式可⽤⼀次设置多个变量,每个变量为⼀个<key>=<value>
的键值对,如果<value>中包含空格,可以反斜线(\)进⾏转义
也可以通过对<value>加引号进⾏标识。另外,反斜线也可⽤于续航
定义多个变量时。建议使⽤第⼆种⽅式,以便在同⼀层中完成所有功能具体⽤法:
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre