Bootstrap

Dockerfile常用指令

通过Dockerfile构建镜像

使用docker build命令通过Dockerfile和构建上下文(build context)构建镜像

构建上下文是由文件路径(本地文件系统上的目录)或一个URL(Git仓库位置)定义的一组文件

构建上下文以递归方式处理,这样本地路径包括其中的任何的子目录,URL包括仓库及其子模块

一个使用当前目录作为上下文的简单构建命令:

docker build .

按照习惯,将Dockerfile文件直接命名为“Dockerfile”,并置于构建上下文的根位置,不然,需要使用-f选项显式指定Dockerfile文件的具体位置:

docker bulid -f /path/to/a/Dockerfile

可以指定构建之后要保存的新镜像的仓库名和标签

docker build -t shykes/myapp . 

Dockerfile常用指令 

FROM指令--设置基础镜像

FROM指令支持由ARG指令声明的变量,ARG指令应置于第一条FROM指令的前面

RUN指令--运行命令

RUN <command>   #shell格式,命令在shell环境中运行,

RUN ["executable","param1","param2"]  #exec模式

 RUN指令将在当前镜像顶部的新层中执行命令,并提交结果

CMD指令--指定容器启动时默认执行的命令

CMD ["executable","param1","param2"]   #exec格式

CMD ["param1","param2"]  #提供给ENTRYPOINT指令的默认参数

CMD command1 parame1 param2  #shell格式

LABEL指令--向镜像添加标记(元数据)

 LABEL <key>=<value> <key>=<value> <key>=<value>...

EXPOSE指令--声明容器运行时侦听的网络端口 

EXPOSE <port> [<port>...]

可以指定TCP或者UDP端口,默认是TCP端口

ENV指令--指定环境变量

ENV <key> <value>

ENV <key>=<value>...

COPY指令--将源文件复制到容器 

COPY [--chown=<user>:<group>] <src>...<dest>

COPY [--chown=<user>:<group>] ["<src>",..."<dest>"]

ADD指令--将源文件复制到容器 

ADD [--chown=<user>:<group>] <src>...<dest>

ADD [--chown=<user>:<group>] ["<src>",..."<dest>"] 

与COPY有两点不同:源可以使用URL指定    归档文件在复制过程中能够被自动解压缩

ENTRYPOINT指令--配置容器的默认入口 

ENTRYPOINT command param1 param2   #shell格式,命令在shell环境中运行,

ENTRYPOINT ["executable","param1","param2"]  #exec模式

VOLUME指令--创建挂载点 

VOLUME ["/data"]

WORKDIR指令--配置工作目录 

WORKDIR /path/to/workdir

USER指令--设置运行镜像时使用的用户名 

USER <user> [:<group>] or

USER <UID> [:<GID>]

ARG指令--定义变量 

ARG <name> [=<default value>]

SHELL指令--指定命令的shell格式 

SHELL ["executable","parameters"]

用于指定命令的shell格式以覆盖默认的shell

SHELL指令必须以JSON格式写在Dockerfile中

创建基础镜像

使用Tar归档文件创建完整的镜像

使用scratch镜像创建简单的父镜像

FROM scratch指令会通知构建进程,让Dockerfile中的下一条命令成为镜像中的第一个文件系统层

使用多阶段构建

可以在Dockerfile中使用多个FROM指令,每个FROM指令可以使用不同的基础镜像,并且各自分别开始一个新的构建阶段

;