Dockerfile中常用命令汇总

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档