mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-11 12:21:17 +00:00
style: apply global formatting fixes (struct, spacing, zhlint)
This commit is contained in:
@@ -48,7 +48,7 @@ COPY --from=builder /app/dist /app/dist
|
||||
|
||||
使用多阶段构建,构建的镜像中只包含了目标文件夹 `dist`,但仍然存在一些问题,当 `package.json` 文件变动时,`RUN npm i && rm -rf ~/.npm` 这一层会重新执行,变更多次后,生成了大量的中间层镜像。
|
||||
|
||||
为解决这个问题,进一步的我们可以设想一个类似 **数据卷** 的功能,在镜像构建时把 `node_modules` 文件夹挂载上去,在构建完成后,这个 `node_modules` 文件夹会自动卸载,实际的镜像中并不包含 `node_modules` 这个文件夹,这样我们就省去了每次获取依赖的时间,大大增加了镜像构建效率,同时也避免了生成了大量的中间层镜像。
|
||||
为解决这个问题,进一步的我们可以设想一个类似**数据卷**的功能,在镜像构建时把 `node_modules` 文件夹挂载上去,在构建完成后,这个 `node_modules` 文件夹会自动卸载,实际的镜像中并不包含 `node_modules` 这个文件夹,这样我们就省去了每次获取依赖的时间,大大增加了镜像构建效率,同时也避免了生成了大量的中间层镜像。
|
||||
|
||||
`BuildKit` 提供了 `RUN --mount=type=cache` 指令,可以实现上边的设想。
|
||||
|
||||
@@ -104,7 +104,7 @@ RUN --mount=type=cache,target=/tmp/dist,from=builder,source=/app/dist \
|
||||
|
||||
#### `RUN --mount=type=bind`
|
||||
|
||||
该指令可以将一个镜像(或上一构建阶段)的文件挂载到指定位置。
|
||||
该指令可以将一个镜像 (或上一构建阶段) 的文件挂载到指定位置。
|
||||
|
||||
```docker
|
||||
## syntax=docker/dockerfile:1
|
||||
@@ -126,7 +126,7 @@ RUN --mount=type=tmpfs,target=/temp \
|
||||
|
||||
#### `RUN --mount=type=secret`
|
||||
|
||||
该指令可以将一个文件(例如密钥)挂载到指定位置。
|
||||
该指令可以将一个文件 (例如密钥) 挂载到指定位置。
|
||||
|
||||
```docker
|
||||
## syntax=docker/dockerfile:1
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## 9.2 使用 Buildx 构建镜像
|
||||
|
||||
本节涵盖了相关内容与详细描述,主要探讨以下几个方面:
|
||||
|
||||
### 使用
|
||||
|
||||
Buildx 的使用非常直观,绝大多数情况下可以替代 `docker build` 命令。
|
||||
@@ -12,7 +14,7 @@ $ docker buildx build .
|
||||
=> ...
|
||||
```
|
||||
|
||||
Buildx 使用 [BuildKit 引擎](9.1_buildkit.md) 进行构建,支持许多新的功能,具体参考 [Buildkit](9.1_buildkit.md) 一节。
|
||||
Buildx 使用 [BuildKit 引擎](9.1_buildkit.md)进行构建,支持许多新的功能,具体参考 [Buildkit](9.1_buildkit.md) 一节。
|
||||
|
||||
#### 使用 `bake`
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
## 9.3 构建多种系统架构支持的 Docker 镜像
|
||||
|
||||
Docker 镜像可以支持多种系统架构,这意味着你可以在 `x86_64`、`arm64` 等不同架构的机器上运行同一个镜像。这是通过一个名为 "manifest list"(或称为 "fat manifest")的文件来实现的。
|
||||
Docker 镜像可以支持多种系统架构,这意味着你可以在 `x86_64`、`arm64` 等不同架构的机器上运行同一个镜像。这是通过一个名为 “manifest list” (或称为 “fat manifest”) 的文件来实现的。
|
||||
|
||||
### Manifest List 是什么?
|
||||
|
||||
@@ -79,14 +79,14 @@ $ docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t your-us
|
||||
|
||||
在 `Dockerfile` 中,你可以使用一些预定义的构建参数来根据目标平台定制构建过程:
|
||||
|
||||
* `TARGETPLATFORM`: 构建镜像的目标平台,例如 `linux/amd64`。
|
||||
* `TARGETOS`: 目标平台的操作系统,例如 `linux`。
|
||||
* `TARGETARCH`: 目标平台的架构,例如 `amd64`。
|
||||
* `TARGETVARIANT`: 目标平台的变种,例如 `v7`。
|
||||
* `BUILDPLATFORM`: 构建环境的平台。
|
||||
* `BUILDOS`: 构建环境的操作系统。
|
||||
* `BUILDARCH`: 构建环境的架构。
|
||||
* `BUILDVARIANT`: 构建环境的变种。
|
||||
* `TARGETPLATFORM`:构建镜像的目标平台,例如 `linux/amd64`。
|
||||
* `TARGETOS`:目标平台的操作系统,例如 `linux`。
|
||||
* `TARGETARCH`:目标平台的架构,例如 `amd64`。
|
||||
* `TARGETVARIANT`:目标平台的变种,例如 `v7`。
|
||||
* `BUILDPLATFORM`:构建环境的平台。
|
||||
* `BUILDOS`:构建环境的操作系统。
|
||||
* `BUILDARCH`:构建环境的架构。
|
||||
* `BUILDVARIANT`:构建环境的变种。
|
||||
|
||||
例如,你可以这样编写 `Dockerfile` 来拷贝特定架构的二进制文件:
|
||||
|
||||
@@ -101,7 +101,7 @@ COPY bin/dist-${TARGETOS}-${TARGETARCH} /dist
|
||||
ENTRYPOINT ["/dist"]
|
||||
```
|
||||
|
||||
### 使用 `docker manifest`(底层工具)
|
||||
### 使用 `docker manifest` (底层工具)
|
||||
|
||||
除了 `docker buildx`,我们也可以直接操作 Manifest List 来手动组合不同架构的镜像。
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@ Docker Buildx 是一个 docker CLI 插件,其扩展了 docker 命令,支持
|
||||
|
||||
> Buildx 需要 Docker v19.03+。在较新版本中已更常用且功能更完整。
|
||||
|
||||
## 概述
|
||||
|
||||
总体概述了以下内容。
|
||||
|
||||
## 本章内容
|
||||
|
||||
本章将详细介绍 Docker Buildx 的使用,包括:
|
||||
|
||||
Reference in New Issue
Block a user