Fix and update

This commit is contained in:
baohua
2026-02-09 11:34:35 -08:00
parent e669ee0fe8
commit 63377d0431
136 changed files with 2146 additions and 262 deletions

View File

@@ -4,6 +4,8 @@ Docker 镜像可以支持多种系统架构,这意味着你可以在 `x86_64`
### Manifest List 是什么
为了理解多架构镜像的原理我们需要先了解 Manifest List 的概念
Manifest list 是一个包含了多个指向不同架构镜像的 manifest 的文件当你拉取一个支持多架构的镜像时Docker 会自动根据你当前的系统架构选择并拉取对应的镜像
例如官方的 `hello-world` 镜像就支持多种架构你可以使用 `docker manifest inspect` 命令来查看它的 manifest list
@@ -40,6 +42,8 @@ $ docker manifest inspect hello-world
### 使用 `docker buildx` 构建多架构镜像
`docker buildx` 是构建多架构镜像的最佳实践工具它屏蔽了底层的复杂性提供了一键构建多架构镜像的能力
Docker 19.03+ 版本中`docker buildx` 是推荐的用于构建多架构镜像的工具它使用 `BuildKit` 作为后端可以大大简化构建过程
#### 新建 `builder` 实例
@@ -57,6 +61,7 @@ $ docker buildx inspect --bootstrap
```dockerfile
## Dockerfile
FROM --platform=$TARGETPLATFORM alpine
RUN uname -a > /os.txt
@@ -96,26 +101,33 @@ COPY bin/dist-${TARGETOS}-${TARGETARCH} /dist
ENTRYPOINT ["/dist"]
```
### 使用 `docker manifest` (底层工具)
### 使用 `docker manifest`底层工具
除了 `docker buildx`我们也可以直接操作 Manifest List 来手动组合不同架构的镜像
`docker manifest` 是一个更底层的命令可以用来创建检查和推送 manifest list虽然 `docker buildx` 在大多数情况下更方便但了解 `docker manifest` 仍然有助于理解其工作原理
#### 创建 manifest list
运行以下命令
```bash
## 首先,为每个架构构建并推送镜像
$ docker buildx build --platform linux/amd64 -t your-username/my-app:amd64 . --push
$ docker buildx build --platform linux/arm64 -t your-username/my-app:arm64 . --push
## 然后,创建一个 manifest list将它们组合在一起
$ docker manifest create your-username/my-app:latest \
--amend your-username/my-app:amd64 \
--amend your-username/my-app:arm64
## 最后,推送 manifest list
$ docker manifest push your-username/my-app:latest
```
#### 检查 manifest list
你可以使用 `docker manifest inspect` 来查看一个 manifest list 的详细信息如上文所示
你可以使用 `docker manifest inspect` 来查看一个 manifest list 的详细信息如上文所示