本文作者:丁辉
Docker 构建镜像
Docker 构建镜像有很多门道,今天咱就来说道说道,直接实际演示
为了方便简单演示,咱们就随便打包一份文件当作示例好了
多阶段构建
编写 Dockerfile
使用 AS 参数,后面定义名称
第二个容器直接 COPY 第一个容器所构建好的文件包使用
1
vi Dockerfile
1
2
3
4
5
6
7
8
9FROM 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
15FROM 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.
- 本文链接: https://blog.offends.cn/Kubernetes/Docker/Docs/Docker构建镜像.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。