dockerfile的基本命令

1.dockerfile

镜像的定制实际上就是定制每一层所添加的配置和文件。如果可以把每一层修改、安装、构建、操作的命令都可以写到一个脚本中,用这个脚本来构建、定制镜像,并且重复利用、镜像的构建透明化、体积的优化,那这个脚本称之为dockerfile。

2.为什么使用dockerfile

目前的仓库镜像很难找到一个满足项目需求、非常好用的镜像,就需要自定义镜像

3.dockerfile语法

基本指令有13个

FROM

MAINTAINER

RUN

CMD

EXPOSE

ENV

ADD

COPY

ENTERYPOINT

VOLUVE

USER

WOPKDIR

ONBUILD

3.1FROM

用法:FROM

说明:dockerfile第一个指令必须是FROM其制定一个构建镜像的基本源镜像,如果本地docker镜像没有会从公共库中拉去pull。没有指定镜像的Tag则会使用默认的latest标签tag,可以出现很多次,如果现在同一个dockerfile中构建多个镜像

3.2 MAINTAINER

用法:MAINTAINER

说明:描述镜像的创建者的名称和邮箱

3.3RUN

用法:RUN”command””param1””param2””…”

说明:RUN命令是执行之后会生成一个新的镜像。也可以是镜像的分层构建。一句RUN就是一个分层,相当于一个版本。RUN后面的都需要使用双引号不能用单引号,也可以不写?

3.4CMD

用法:CMD[“command”,”param1”,”param2”,”…”]

说明:CMD命令在dockerfile中只能出现一次,如果又多次,则只有最后一次生成。

3.5EXPOSE

用法:EXPOSEport1port2…

说明:设置容器对外映射的容器端口号,在docker run -p 的时候生效。

3.6ENV

用法:ENV

说明: ENV指令用以定义镜像的环境变量,定义环境变量的同时,可以引用已经定义的环境变量

3.7ADD

用法:ADD

说明:复制宿主机本地文件或者目录或者远程文件,添加到指定的容器的目录,支持正则。路径是绝对路径,不存在自动创建。如果源是一个目录,只会复制目录下的内容,目录本身不会复制。ADD命令会将复制的文件夹自动解压

3.8COPY

用法:COPY

Src表示源 宿主机上的源,源代表着文件或者文件目录

Dest表示 容器中的指定目录

说明:COPY除了不能自动解压,也不能复制网络文件。其他功能和ADD相同

3.9ENTERYPOINT

用法:ENTERYPOINT”command””pararm1””pararm2””…”

说明:和CMD一样,唯一的区别是不能被docker run 命令的执行命令覆盖,如果想覆盖则需要带上 –entrypoint,如果是多项最后一个有效

3.10VOLUME

用法:VOLUME[“path”]

说明:宿主机上创建一个挂载,挂载到容器的指定路径,docker run -v 命令也能实现挂载,而且更强大。这个命令不能指定宿主机的需要挂载到容器的文件目录的路径,但是docker -v可以,而且docker -v 也可以挂载数据容器

3.11USER

用法:USER [:] or

USER [:]

说明:指定运行时的用户名或UID,后续的RUN也会使用指定的用户。当服务不需要管理权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户。要临时获取管理权限可以使用gosu,而不推荐sudo

3.12WORKDIR

用法:WORKDIR path

说明:为RUN,COPY,ENTRYPOINT 指定配置工作目录,可以使用多个WORKDIR后续参数如果是相对路径,则会基于之前的命令指定的路径。比如:WORKDIR/Home WORKDIR test 最终的路径为/Home/test

如果设置对了环境变量 例如当前的环境变量

 

3.13 ONBUILD

说明:ONBUILD指令可以为镜像添加触发。当我们编写一个新的Dockerfile文件来基于A镜像构建一个镜像(比如为B镜像)时,这时构造A镜像的Dockerfile文件中的ONBUILD指令就生效了,在构建B镜像的过程中,首先会执行ONBUILD指令指定的指令,然后才会执行其它指令。

需要注意的是,如果是再利用B镜像构造新的镜像时,那个ONBUILD指令就无效了,也就是说只能再构建子镜像中执行,对孙子镜像构建无效。

你可能感兴趣的:(运维)