当前位置:   article > 正文

Docker学习笔记 —— Dockerfile_dockerfile 提取文件名

dockerfile 提取文件名

系列文章目录

Docker学习笔记 —— Docker 介绍
Docker学习笔记 —— Docker 安装
Docker学习笔记 —— Docker 常用命令
Docker学习笔记 —— Docker 存储
Docker学习笔记 —— Docker 网络
Docker学习笔记 —— Dockerfile



  • Docker 可以通过读取Docker文件中的说明自动生成镜像。
  • Docker 是一个文本文档,其中包含用户可以在命令行上调用以组装镜像的所有命令,用户可以使用docker build创建一个连续执行多个命令行执行的自动构建;

一、 docker build

  • docker build 命令从Dockerfile和上下文构建镜像,生成的上下文是可以指定为本地文件系统上的目录,还可以指定为Git存储库位置。构建上下文是递归处理的;

  • 构建是由Docker守护进程运行,而不是由CLI运行;

    • 构建过程要做的第一件事是(递归处理)将整个上下文发送到守护进程,大多数情况下,最该从一个空目录作为上下文开始,并将Dockerfile 保存在该目录中,不要使用根目录 / 作为 PATH 构建上下文,因为它会导致构建将硬盘驱动器的全部内容传输到Docker守护进程;
    • 传统上,Dockerfile位于上下文的根目录中,也可以通过在 docker build中使用-f 来指向文件系统中任何位置的Dockerfile,还可以通过 -t来制定存储库和tag

二、环境置换(Environment replacement)

  • 环境变量(用ENV语句声明)也可以在某些指令中用作由 Dockerfile 解释的变量;

  • 环境变量在Dockerfile中用$variable_name 或 ${variable_name} 表示,大括号的语法通常用于解决变量名没有空格的问题如${variable}_name;

  • ${variable_name}还支持一下标准Bash修饰符:

    • ${variable:-word},表示如果设置了变量,则结果将是该值,如果未设置,则结果将为 word
    • ${variable:+word},表示如果设置了变量,则机构将是该值,如果未设置,则结果将是空字符串

三、 dockerfile 指令介绍

3.1 FROM

  • 格式:

    • FROM [--platform=<platform>] <image> [AS <name>]
    • FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
    • FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]
  • FROM 指令初始化一个新的构建阶段并为后续指令设置基础镜像。因此,有效的Dockerfile 必须以FROM指令开头(ARG可以先于FROM),镜像可以是任何有效的镜像,最好挑一些apline,slim之类的基础小镜像,scratch镜像是一个空镜像,常用于多阶段构建;

  • FROM可以在单个Dockerfile中多次出现,以创建多个镜像或将一个构建阶段用作另一个构建阶段的依赖项。只需要在每条新FROM指令之前几下commit输出的最后一个镜像ID。每个FROM指令都会清除以前的指令创建的任何状态;

  • 可以通过添加 AS nameFROM指令来为新的构建阶段命名,这个名称可在后续FROMCOPY --from=<name> 说明中用于引用此阶段构建的镜像;

  • tag 和 digest 值是可选的,如果省略不写,默认使用 lastest ,如果找不到,将返回错误;

  • 如何确定我需要什么要的基础镜像?

    • Java应用当然是java基础镜像(SpringBoot应用)或者T omcat基础镜像(War应用)
    • JS模块化应用一般用nodejs基础镜像
    • 其他各种语言用自己的服务器或者基础环境镜像,如python、golang、java、php等
ARG version=3.13

#不可以引用多个
FROM alpine:$version

CMD ["/bin/sh","-c","echo 11111"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

3.2 LABEL

  • 格式:

    • LABEL <key>=<value> <key>=<value> <key>=<value> ...
  • 键值对结构,该指令向镜像添加元数据,标注镜像的一些说明信息,LABEL值中包含空格可以使用引号、\ 来处理;

LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
  • 1
  • 2
  • 3
  • 4
  • 5

3.3 MAINTAINER (已弃用)

  • 格式:

    • MAINTAINER <name>
  • MAINTAINER指令设置生成图像的作者字段,已弃用,用 LABEL 代替;

3.4 RUN

  • 格式:

    • RUN <command>

      • shell形式,命令在 shell 中运行,默认/bin/sh -c在 Linux 或cmd /S /CWindows 上;
      • shell形式,/bin/sh -c 的方式;
    • RUN ["executable", "param1", "param2"]

      • exec形式,不调用命令shell,不会进行shell处理

      • 例如:RUN[“echo”,"$HOME"]不会对变量 $HOME进行替换,如果想要shell处理,那么:

        • 使用shell形式;
        • 要么直接执行shell,例如 RUN["sh","-c","echo $HOME"];
  • RUN命令将在当前图层之上的新层中执行任何命令并提交结果,生成的提交镜像将用于 Dockerfile的下一步;

  • 分层运行 RUN 指令并生成提交符合Docker的核心概念,在Docker中,提交很便宜,可以源代码管理一样从镜像历史中的任何点创建容器;

  • exec形式可以避免破坏shell字符串,并使用不包含指定shell可执行文件的基本映像运行RUN命令。

  • 可以使用SHELL命令更改shell形式的默认shell。 在shell形式中,您可以使用\(反斜杠)将一条 RUN指令继续到下一行;

#指定构建参数【构建时】
ARG version=3.13

#不可以引用多个
FROM alpine:$version

#给镜像加元数据信息 
LABEL maintainer
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/834658
推荐阅读
相关标签
  

闽ICP备14008679号