From 90a73163222cc3c0447704a7c24bd3ffdfab2fb1 Mon Sep 17 00:00:00 2001 From: Kang Huaishuai Date: Sun, 6 Sep 2020 08:52:31 +0800 Subject: [PATCH] buildkit more arg --- buildx/buildkit.md | 6 ++-- buildx/multi-arch-images.md | 60 ++++++++++++++++++++++++++++++++++++- kubernetes/setup/kubeadm.md | 8 ++--- 3 files changed, 67 insertions(+), 7 deletions(-) diff --git a/buildx/buildkit.md b/buildx/buildkit.md index 235e1e6..e8300a0 100644 --- a/buildx/buildkit.md +++ b/buildx/buildkit.md @@ -4,8 +4,6 @@ **注意:如果您的镜像构建使用的是云服务商提供的镜像构建服务(腾讯云容器服务、阿里云容器服务等),由于上述服务提供商的 Docker 版本低于 18.09,BuildKit 无法使用,将造成镜像构建失败。建议使用 BuildKit 构建镜像时使用一个新的 Dockerfile 文件(例如 Dockerfile.buildkit)** -**注意:docker-compose build 命令暂时不支持 BuildKit** - 目前,Docker Hub 自动构建已经支持 buildkit,具体请参考 https://github.com/docker-practice/docker-hub-buildx ## `Dockerfile` 新增指令详解 @@ -147,6 +145,10 @@ $ ssh-add ~/.ssh/id_rsa $ docker build -t test --ssh default=$SSH_AUTH_SOCK . ``` +## docker-compose build 使用 Buildkit + +设置 `COMPOSE_DOCKER_CLI_BUILD=1` 环境变量即可使用。 + ## 官方文档 * https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md diff --git a/buildx/multi-arch-images.md b/buildx/multi-arch-images.md index 79b66ae..4cc9483 100644 --- a/buildx/multi-arch-images.md +++ b/buildx/multi-arch-images.md @@ -9,7 +9,7 @@ Docker for Linux 不支持构建 `arm` 架构镜像,我们可以运行一个新的容器让其支持该特性,Docker 桌面版无需进行此项设置。 ```bash -$ docker run --rm --privileged docker/binfmt:820fdd95a9972a5308930a2bdfb8573dd4447ad3 +$ docker run --rm --privileged tonistiigi/binfmt:latest --install all ``` 由于 Docker 默认的 `builder` 实例不支持同时指定多个 `--platform`,我们必须首先创建一个新的 `builder` 实例。同时由于国内拉取镜像较缓慢,我们可以使用配置了 [镜像加速地址](https://github.com/moby/buildkit/blob/master/docs/buildkitd.toml.md) 的 [`dockerpracticesig/buildkit:master`](https://github.com/docker-practice/buildx) 镜像替换官方镜像。 @@ -66,3 +66,61 @@ Linux buildkitsandbox 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 aarch6 $ docker run -it --rm myusername/hello Linux buildkitsandbox 4.9.125-linuxkit #1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 Linux ``` + +## 架构相关变量 + +`Dockerfile` 支持如下架构相关的变量 + +**TARGETPLATFORM** + +构建镜像的目标平台,例如 `linux/amd64`, `linux/arm/v7`, `windows/amd64`。 + +**TARGETOS** + +`TARGETPLATFORM` 的 OS 类型,例如 `linux`, `windows` + +**TARGETARCH** + +`TARGETPLATFORM` 的架构类型,例如 `amd64`, `arm` + +**TARGETVARIANT** + +`TARGETPLATFORM` 的变种,该变量可能为空,例如 `v7` + +**BUILDPLATFORM** + +构建镜像主机平台,例如 `linux/amd64` + +**BUILDOS** + +`BUILDPLATFORM` 的 OS 类型,例如 `linux` + +**BUILDARCH** + +`BUILDPLATFORM` 的架构类型,例如 `amd64` + +**BUILDVARIANT** + +`BUILDPLATFORM` 的变种,该变量可能为空,例如 `v7` + +### 使用举例 + +例如我们要构建支持 `linux/arm/v7` 和 `linux/amd64` 两种架构的镜像。假设已经生成了两个平台对应的二进制文件: + +* bin/dist-linux-arm +* bin/dist-linux-amd64 + +那么 `Dockerfile` 可以这样书写: + +```bash +FROM scratch + +# 使用变量必须申明 +ARG TARGETOS + +ARG TARGETARCH + +COPY bin/dist-${TARGETOS}-${TARGETARCH} /dist + +ENTRYPOINT ["dist"] +``` diff --git a/kubernetes/setup/kubeadm.md b/kubernetes/setup/kubeadm.md index 828d566..3ee8400 100644 --- a/kubernetes/setup/kubeadm.md +++ b/kubernetes/setup/kubeadm.md @@ -60,10 +60,10 @@ $ sysctl --system ```bash # 启用 ipvs 相关内核模块 [Service] -ExecStartPre=-modprobe ip_vs -ExecStartPre=-modprobe ip_vs_rr -ExecStartPre=-modprobe ip_vs_wrr -ExecStartPre=-modprobe ip_vs_sh +ExecStartPre=-/sbin/modprobe ip_vs +ExecStartPre=-/sbin/modprobe ip_vs_rr +ExecStartPre=-/sbin/modprobe ip_vs_wrr +ExecStartPre=-/sbin/modprobe ip_vs_sh ``` 执行以下命令应用配置。