Dockerfile

1:环境介绍

1.Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级父目录下,可以为Dockerfile父目录的子目录

2.Dockerfile中相对路径默认都是Dockerfile所在的目录

3.Dockerfile中一定要惜字如金,能写到一行的指令,一定要写到一行,原因是分层构建,联合挂载这个特性。

Dockerfile中每一条指令被视为一层

4.Dockerfile中指明大写(约定俗成)

————————————————

版权声明:本文为CSDN博主「AtlanSI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/AtlanSI/article/details/87892016

2:指令介绍

FROM

功能为指定基础镜像,并且必须是第一条指令。

MAINTAINER

指定作者

LABEL

功能是为镜像指定标签

ADD

一个复制命令,把文件复制到镜像中,自带解压功能

如果把虚拟机与容器想象成两台linux服务器的话,那么这个命令就类似于scp,只是scp需要加用户名和密码的权限验证,而ADD不用。

  • 路径的填写可以是容器内的绝对路径,也可以是相对于工作目录的相对路径,推荐写成绝对路径

  • 可以是一个本地文件或者是一个本地压缩文件,还可以是一个url

  • 如果把写成一个url,那么ADD就类似于wget命令
    示例

注意事项

  • src为一个目录的时候,会自动把目录下的文件复制过去,目录本身不会复制

  • 如果src为多个文件,dest一定要是一个目录

COPY

看这个名字就知道,又是一个复制命令

与ADD的区别

  • COPY的只能是本地文件,其他用法一致

EXPOSE

EXPOSE

功能为暴漏容器运行时的监听端口给外部

但是EXPOSE并不会使容器访问主机的端口

如果想使得容器与主机的端口有映射关系,必须在容器启动的时候加上 -P参数

ENV

功能为设置环境变量

语法有两种

 ENV <key><value>
 ENV <key>=<value>...12

两者的区别就是第一种是一次设置一个,第二种是一次设置多个

RUN

功能为运行指定的命令,构建时运行的密令

RUN命令有两种格式

CMD

功能为容器启动时默认命令或参数

不要把RUN和CMD搞混了。RUN是构件容器时就运行的命令以及提交运行结果CMD是容器启动时执行的命令,在构件时并不运行,构件时紧紧指定了这个命令到底是个什么样子

ENTRYPOINT

功能是:容器启动时运行得启动命令

如果从上到下看到这里的话,那么你应该对这两种语法很熟悉啦。

第二种就是写shell (shell执行)

第一种就是可执行文件加参数(EXEC调用,可在docker run启动时传递参数)

与CMD比较说明(这俩命令太像了,而且还可以配合使用):

相同点:

只能写一条,如果写了多条,那么只有最后一条生效

容器启动时才运行,运行时机相同

不同点:

ENTRYPOINT不会被运行的command覆盖,而CMD则会被覆盖

如果我们在Dockerfile种同时写了ENTRYPOINT和CMD,并且CMD指令不是一个完整的可执行命令,那么CMD指定的内容将会作为ENTRYPOINT的参数

————————————————

版权声明:本文为CSDN博主「AtlanSI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

如果我们在Dockerfile种同时写了ENTRYPOINT和CMD,并且CMD是一个完整的指令,那么它们两个会互相覆盖,谁在最后谁生效

原文链接:https://blog.csdn.net/AtlanSI/article/details/87892016

VOLUME

可实现挂载功能,可以将宿主机目录挂载到容器中

说的这里大家都懂了,可用专用的文件存储当作Docker容器的数据存储部分

WORKDIR

设置工作目录,对RUN,CMD,ENTRYPOINT,COPY,ADD生效。如果不存在则会创建,也可以设置多次。

ONBUILD

语法:

ONBUILD [INSTRUCTION]

1

这个命令只对当前镜像的子镜像生效。

比如当前镜像为A,在Dockerfile种添加:

ONBUILD RUN ls -al

1

这个 ls -al 命令不会在A镜像构建或启动的时候执行

此时有一个镜像B是基于A镜像构建的,那么这个ls -al 命令会在B镜像构建的时候被执行

————————————————

版权声明:本文为CSDN博主「AtlanSI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/AtlanSI/article/details/87892016

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值