Dockerfile(1) - FROM 指令详解

简介: Dockerfile(1) - FROM 指令详解

FROM


  • 指明当前的镜像基于哪个镜像构建
  • dockerfile 必须以 FROM 开头,除了 ARG 命令可以在 FROM 前面

FROM [--platform=<platform>] <image> [AS <name>]


FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]


FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]

 

小栗子


FROM alpine:latest

 

一个 dockerfile 可以有多个 FROM


  • 可以有多个 FROM 来创建多个镜像,或区分构建阶段,将一个构建阶段作为另一个构建阶段的依赖项
  • AS <name> 就是命名当前构建阶段
  • 在后续构建阶段,可以给 FROM、COPY 指令用上,通过 --from=<name> 引用前面构建的镜像


# 第一构建阶段:将仅用于生成 requirements.txt 文件
FROM tiangolo/uvicorn-gunicorn:python3.9 as requirements-stage
# 将当前工作目录设置为 /tmp
WORKDIR /tmp
# 生成 requirements.txt
RUN touch requirements.txt
# 第二构建阶段,在这往后的任何内容都将保留在最终容器映像中
FROM python:3.9
# 将当前工作目录设置为 /code
WORKDIR /code
# 复制 requirements.txt;这个文件只存在于前一个 Docker 阶段,这就是使用 --from-requirements-stage 复制它的原因
COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt
# 运行命令
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
# 复制
COPY ./app /code/app


了解 ARG 和 FROM 如何交互


FROM 指令支持由出现在第一个 FROM 之前的任何 ARG 指令声明的变量

ARG  CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD  /code/run-app
FROM extras:${CODE_VERSION}
CMD  /code/run-extras


注意

  • 在 FROM 之前声明的 ARG 在构建阶段之外,因此不能在 FROM 之后的任何指令中使用
  • 要使用在第一个 FROM 之前声明的 ARG 的默认值,要在构建阶段内声明一次没有值的 ARG 指令


ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version
相关文章
|
NoSQL 关系型数据库 MySQL
Dockerfile(9) - ENTRYPOINT 指令详解
Dockerfile(9) - ENTRYPOINT 指令详解
823 0
|
3月前
|
Docker 容器
在Docker中,Dockerfile有哪些常见指令?
在Docker中,Dockerfile有哪些常见指令?
|
6月前
|
JSON 物联网 Shell
Dockerfile指令详解
Dockerfile指令详解
126 0
|
6月前
|
Linux Docker 容器
Docker Dockerfile 语法与指令
Docker Dockerfile 语法与指令
61 0
Dockerfile(3) - WORKDIR 指令详解
Dockerfile(3) - WORKDIR 指令详解
1036 0
|
Java 应用服务中间件 Shell
【Docker】四 Dockerfile指令详解
需求 - 启动一个Nginx容器。 - 将Nginx容器的首⻚改为 `Welcome to my first docker class` 。 - 将容器保存下来。
192 0
|
存储 JSON 监控
纯干货!Docker Dockerfile指令大全(下)
什么是 Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。使用docker build命令,用户可以创建基于基础镜像的自定义镜像。
|
Docker 容器
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
本文是博主学习docker 制作镜像指令的记录,希望对大家有所帮助
195 0
Dockerfile文件中CMD指令与ENTRYPOINT指令的区别
|
存储 应用服务中间件 调度
Dockerfile(12) - HEALTHCHECK 指令详解
Dockerfile(12) - HEALTHCHECK 指令详解
413 0
Dockerfile(12) - HEALTHCHECK 指令详解
|
Linux Shell 应用服务中间件
Dockerfile指令详解(六)
dockfile详细配置 1.dockerfile主要组成部分 基础镜像信息 FROM centos:6.9 制作镜像操作指令 RUN yum -y install openssh-server 容器启动时操作指令 CMD ["/bin/bash"]
508 0
Dockerfile指令详解(六)