@@ -42,8 +42,10 @@ docker buildx commands:
42
42
43
43
## builder
44
44
45
- 当前的构建器实例 (builder) 的 driver 是 ` docker-container ` 或者 ` kubernetes ` 时,可以构建多架构镜像。
46
- 默认的 default builder 是 ` docker ` driver,而不是 ` docker-container ` driver。
45
+ 当构建器实例 (builder) 的 driver 是 ` docker-container ` 或者 ` kubernetes ` 时,可以构建多架构镜像。
46
+ driver=docker 时,只能构建当前系统架构的镜像。
47
+
48
+ 默认的 builder 是 ` docker ` driver。你可以使用 ` docker buildx ls ` 和 ` docker buildx inspect ` 查看详情。
47
49
48
50
所以你要用 ` docker buildx create ` 创建自己的构建器实例。` --driver docker-container ` 是默认参数,会创建一个基于 ` moby/buildkit ` 镜像的容器。在这个容器中构建多架构镜像。
49
51
@@ -52,6 +54,46 @@ docker buildx commands:
52
54
- ` docker buildx use ` 切换 builder 实例。
53
55
- ` docker buildx inspect ` 查看当前 builder 实例信息。
54
56
57
+ ### builder 配置
58
+
59
+ 当创建 ` --driver=docker-container ` 构建器后,在该实例里执行的构建操作,不会受到 docker 系统配置的影响。
60
+ 比如 buildx pull 镜像时,不会受到系统配置的 registry mirror 的影响。
61
+
62
+ 你可以在创建构建器时用 ` --buildkitd-config ` 参数指定配置,详见[ 文档] ( https://docs.docker.com/build/buildkit/configure/ ) 。
63
+
64
+ ### 中国环境下的 buildx 配置
65
+
66
+ 由于 docker.io registry 已经被 GFW。pull/push image 都会失败。所以若想在中国环境下操作,有两种常见方案:
67
+
68
+ #### 使用镜像仓库
69
+
70
+ 这种方法只适用于:只需要 pull image,不用 push image。
71
+
72
+ 1 . 准备可用的 registry mirror。例如 ` mirror.docker.io ` 。
73
+ 2 . 当前目录下创建 config.toml 文件。内容为
74
+
75
+ ``` toml
76
+ [registry ."docker .io" ]
77
+ mirrors = [" mirror.docker.io" ]`
78
+ ```
79
+
80
+ 3. 创建 builder: `docker buildx create --name $BUILDER --bootstrap --use --buildkitd-config =./config.toml`
81
+ 4. 构建镜像 `docker buildx build`
82
+
83
+ # ### 使用 http 代理
84
+
85
+ 这种方法适用于:需要 push/push image。
86
+
87
+ 1. 准备可用的 http 代理。
88
+ 2. 创建 builder: `docker buildx create --name $BUILDER --bootstrap --use`
89
+ 3. 构建镜像 `http_proxy=$http_proxy https_proxy =$http_proxy docker buildx build`
90
+
91
+ 注意:如果你的 proxy 代理程序运行在本机上,`$http_proxy` 的值应该是 `http://127.0.0.1:$port`,而不是 `http://host.docker.internal:$port`。
92
+
93
+ 注意:使用 `--driver-opt env.http_proxy` 创建的 builder 实测是无效果的: `docker buildx create --name $BUILDER --bootstrap --use --driver-opt env.http_proxy =$http_proxy --driver-opt env.https_proxy =$http_proxy`。
94
+
95
+ 详见 https://github.com/moby/buildkit/issues/5839
96
+
55
97
# # docker buildx build
56
98
57
99
`docker buildx build --platform linux/amd64,linux/arm64,linux/386,linux/arm/v7,linux/arm/v6 --push --tag owner/image:version .`
0 commit comments