Skip to content

Commit

Permalink
buildkit more arg
Browse files Browse the repository at this point in the history
  • Loading branch information
khs1994 committed Sep 6, 2020
1 parent 6ceeec7 commit 90a7316
Showing 3 changed files with 67 additions and 7 deletions.
6 changes: 4 additions & 2 deletions buildx/buildkit.md
Original file line number Diff line number Diff line change
@@ -4,8 +4,6 @@

**注意如果您的镜像构建使用的是云服务商提供的镜像构建服务腾讯云容器服务阿里云容器服务等),由于上述服务提供商的 Docker 版本低于 18.09BuildKit 无法使用将造成镜像构建失败建议使用 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
60 changes: 59 additions & 1 deletion buildx/multi-arch-images.md
Original file line number Diff line number Diff line change
@@ -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"]
```
8 changes: 4 additions & 4 deletions kubernetes/setup/kubeadm.md
Original file line number Diff line number Diff line change
@@ -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
```

执行以下命令应用配置

0 comments on commit 90a7316

Please sign in to comment.