Dockerfile指令的使用

关于Dockerfile

Dockerfile实际上就是一系列创建Docker镜像的脚本, 虽然可以通过命令行来执行, 但是那样繁琐而且容易出错.

Dockerfile指令

FROM

他的意思是在创建新的镜像时使用的基础镜像.

  • 格式:

    • From [name]
  • 示例:
    • From nginx
    • From microsoft/dotnet-aspnetcore-runtime

RUN

他的意思是在容器中需要运行的命令, 它包括安装软件、创建文件和目录, 以及创建环境配置等.

  • 格式:

    • Run ["","",""]
    • Run [command]
  • 示例:
    • Run npm install npm -g
    • Run mkdir -p /usr/src/redis
    • Run npm install && npm start
    • Run ["npm","install","npm","-g"]

COPY

Copy指令将文件或者目录复制到容器的文件系统, 文件和目录需位于相对于Dockerfile的路径中.

  • 格式:

    • Copy [ospath] [dockerpath]
    • Copy ["",""]
  • 示例:
    • Copy . .
    • Copy nginx.conf /etc/nginx/nginx.conf
    • Copy . /usr/share/nginx/html
    • Copy hom* /mydir/

ADD

Add指令与Copy指令非常类似,但它包含更多功能。除了将文件从主机复制到容器映像,Add指令还可以使用URL规范从远程位置复制文件。

WORKDIR

Workdir指定的功能相当于使用cd切换工作目录.

  • 格式:

    • Workdir [newpath]
  • 示例:
    • Workdir /app

ENTRYPOINT

配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖。每个Dockerfile中只能有一个Entrypoint,当指定多个时,只有最后一个有效。

  • 格式:

    • Entrypoint ["", ""]
  • 示例:
    • Entrypoint ["dotnet", "App.Web.Host.dll"]

ENV

ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。

  • 格式:

    • Env [name]=[value]
  • 示例:
    • Env VERSION=1.0 DEBUG=on NAME="Magicodes"

CMD

Cmd指令用于设置部署容器映像的实例时要运行的默认命令。如果 Dockerfile中指定了多个Cmd指令,只会计算最后一个指令。也可以使用如下命令行在启动时重载:

docker run [$image] [$other_command]

EXPOSE

Expose用来指定端口,使容器内的应用可以通过端口和外界交互。

  • 格式:

    • Expose [port]
  • 示例:
    • Expose 80

补充

总结

通过上述我们可以看到RUN、ENTRYPOINT和CMD都是执行命令, 但是其实他们是有区别的.

执行的时间点不同, 作用也不同, 按顺序如下:

  • RUN:创建镜像时, 通常用于安装软件包
  • ENTRYPOINT:启动容器时, 可以用来输出日志
  • CMD:启动容器后, 可以用来启动应用

转义字符

在许多情况下, Dockerfile指令需要跨多个行;这可通过转义字符完成。 默认Dockerfile转义字符是反斜杠"". 由于反斜杠在Windows中也是一个文件路径分隔符,这可能导致出现问题。

所以在Windows下可以修改转义字符, 方法是Dockerfile的第一行放置如下转义分析程序指令:

# escape=`

注意,只有两个值可用作转义字符:?和 ` 。

优化

大致总结优化规则如下:

  • 选择合适的基础镜像
  • 优化指令顺序
  • 合并指令
  • 删除多余文件和清理没用的中间结果
  • 使用 .dockerignore

原文地址:https://www.cnblogs.com/jerryqi/p/11777269.html

时间: 2024-11-11 01:00:47

Dockerfile指令的使用的相关文章

Docker基本命令与使用 —— Dockerfile指令与构建(三)

一.Dockerfile指令上 1.指令格式 # Comment 注释, 以#开头 INSTRUCTION argument 以大写的指令+参数 #First Dockerfile 注释 FROM ubuntu:14.04 MAINTAINER dormancypress "[email protected]" RUN apt-get update RUN apt-get install -y nginx EXPOSE 80 From MAINTAINER RUN EXPOSE FRO

docker学习笔记17:Dockerfile 指令 ONBUILD介绍

ONBUILD指令可以为镜像添加触发器.其参数是任意一个Dockerfile 指令. 当我们在一个Dockerfile文件中加上ONBUILD指令,该指令对利用该Dockerfile构建镜像(比如为A镜像)不会产生实质性影响. 但是当我们编写一个新的Dockerfile文件来基于A镜像构建一个镜像(比如为B镜像)时,这时构造A镜像的Dockerfile文件中的ONBUILD指令就生效了,在构建B镜像的过程中,首先会执行ONBUILD指令指定的指令,然后才会执行其它指令. 需要注意的是,如果是再利

dockerfile指令介绍

DOCKERFILE指令:CMD,ENTRYPOINT,ADD,COPY,VOLUME,WORKDIR,USER,ONBUILD,ENV等 1.CMD:用于指定一个容器启动时要运行的命令.类似于RUN指令,只是RUN指令是指定镜像被构建时的命令,而CMD是指容器被启动时要运行的命令 docker run -i -t zhoufujin/apache  /bin/true 和  CMD ["/bin/true"] 等效 这里需要注意:使用docker run命令可以覆盖CMD指令.如果我

Dockerfile 指令

FROM 格式为 FROM <image>或FROM <image>:<tag> 第一条指令必须为 FROM 指令.并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个 FROM 指令(每个镜像一次) MAINTAINER 格式为 MAINTAINER <name>,指定维护者信息 RUN 格式为 RUN <command> 或 RUN ["executable", "param1", &q

Docker Dockerfile 指令

Dockerfile 指令 CMD CMD指令用于指定一个容器启动时要运行的命令.这有点儿类似于RUN指令,只是RUN指令是指定镜像被构建时要运行的命令,而CMD是指定容器被启动时要运行的命令.这和使用docker run命令启动容器时指定要运行的命令非常类似 $ sudo docker run -i -t jamtur01/static_web /bin/true 可以认为上述命令和在Dockerfile中使用如下的CMD 指令是等效的. CMD ["/bin/true"] 选项和命

dockerfile指令汇总

dockerfile指令汇总 1.cmd 指定一个容器启动时可用的指令或指令和参数. cmd ["/bin/true"] cmd["/bin/bash","-l"] 注意:docker run会覆盖cmd命令:深刻理解cmd和entrypoint之间的相互作用也是十分重要的:容器里只能指定一条cmd指令,如果需要启动容器的时候运行多个进程或者命令,考虑使用supervisor服务管理工具. 2.entrypoint docker run执行的指令

dockerfile指令(四)

dockerfile: 使用dockerfile快速创建自定义镜像. 支持以#开头的注释行. 分为4部分: 基础镜像信息. 维护者信息. 镜像操作指令. 容器启动时执行指令.  dockerfile指令说明:           指令                           描述             FROM      指定所创建镜像的基础镜像     RUN      运行命令     CMD      指定启动容器时默认执行的命令.     LABEL      指定生成镜像

Dockerfile 指令汇总及解析

原文地址:http://www.maoyupeng.com/dockerfile-command-introduction.html 什么是Dockerfile Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像.它们简化了从头到尾的流程并极大的简化了部署工作.Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数.其产出为一个新的可以用于创建容器的镜像. 当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形

6.9 docker(一) Dockerfile 指令详解

Dockerfile 指令详解 COPY 复制文件 格式: COPY [--chown=<user>:<group>] <源路径>... <目标路径> COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"] 一种类似于命令行,一种类似于函数调用 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路