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指令可以使用不同的基础镜像,并且各自分别开始一个新的构建阶段