banner
NEWS LETTER

Docker构建镜像

Scroll down

本文作者:丁辉

Docker 构建镜像

Docker 构建镜像有很多门道,今天咱就来说道说道,直接实际演示

为了方便简单演示,咱们就随便打包一份文件当作示例好了

多阶段构建

  • 编写 Dockerfile

    使用 AS 参数,后面定义名称

    第二个容器直接 COPY 第一个容器所构建好的文件包使用

    1
    vi Dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FROM alpine AS builder

    RUN apk add git \
    && git clone https://gitee.com/offends/Docs.git \
    && tar -cvf Docker-Template.tar ./Docker-Template

    FROM alpine

    COPY --from=builder /Docker-Template.tar /

    开始构建

    1
    docker build -t app:v1 .

多阶段构建,选定构建容器

  • 编写 Dockerfile

    当我们在一个 Dockerfile 中定义了多个容器构建,这里我门可以使用 --target 参数指定特定的容器构建

    1
    vi Dockerfile
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    FROM alpine AS builder

    RUN apk add git \
    && git clone https://gitee.com/offends/Docs.git \
    && tar -cvf Docker-Template.tar ./Docker-Template

    FROM alpine AS builder-2

    COPY --from=builder /Docker-Template.tar /
    RUN rm -rf /Docker-Template.tar

    FROM alpine AS builder-3

    COPY --from=builder /Docker-Template.tar /
    RUN tar -xvf /Docker-Template.tar

    开始构建

    1
    docker build --target builder-3 -t app:v1 .

替换构建镜像或参数

  • 编写 Dockerfile

    Dockerfile 可定义变量在外部指定

    1
    vi Dockerfile
    1
    2
    3
    4
    5
    6
    7
    # 默认镜像使用 alpine ,通过外部定义修改镜像为 ubuntu
    ARG IMAGE=alpine
    FROM ${IMAGE}

    # 定义一个ENV,默认值为: default_env,外部传入 NAME_ARG 让 NAME 变量值改变为 demo_env
    ARG NAME_ARG
    ENV NAME=${NAME_ARG:-default_env}

    开始构建

    1
    docker build --build-arg NAME_ARG=demo_env --build-arg IMAGE=ubuntu -t app:v1 .

I'm so cute. Please give me money.

其他文章
cover
Docker更改IP池
  • 70/01/01
  • 00:00
  • Kubernetes-Docker
cover
Docker部署Gitlab
  • 70/01/01
  • 00:00
  • Kubernetes-Docker
目录导航 置顶
  1. 1. Docker 构建镜像
    1. 1.1. 多阶段构建
    2. 1.2. 多阶段构建,选定构建容器
    3. 1.3. 替换构建镜像或参数
请输入关键词进行搜索