buildkit more arg
parent
6ceeec7f45
commit
90a7316322
|
@ -4,8 +4,6 @@
|
||||||
|
|
||||||
**注意:如果您的镜像构建使用的是云服务商提供的镜像构建服务(腾讯云容器服务、阿里云容器服务等),由于上述服务提供商的 Docker 版本低于 18.09,BuildKit 无法使用,将造成镜像构建失败。建议使用 BuildKit 构建镜像时使用一个新的 Dockerfile 文件(例如 Dockerfile.buildkit)**
|
**注意:如果您的镜像构建使用的是云服务商提供的镜像构建服务(腾讯云容器服务、阿里云容器服务等),由于上述服务提供商的 Docker 版本低于 18.09,BuildKit 无法使用,将造成镜像构建失败。建议使用 BuildKit 构建镜像时使用一个新的 Dockerfile 文件(例如 Dockerfile.buildkit)**
|
||||||
|
|
||||||
**注意:docker-compose build 命令暂时不支持 BuildKit**
|
|
||||||
|
|
||||||
目前,Docker Hub 自动构建已经支持 buildkit,具体请参考 https://github.com/docker-practice/docker-hub-buildx
|
目前,Docker Hub 自动构建已经支持 buildkit,具体请参考 https://github.com/docker-practice/docker-hub-buildx
|
||||||
|
|
||||||
## `Dockerfile` 新增指令详解
|
## `Dockerfile` 新增指令详解
|
||||||
|
@ -147,6 +145,10 @@ $ ssh-add ~/.ssh/id_rsa
|
||||||
$ docker build -t test --ssh default=$SSH_AUTH_SOCK .
|
$ 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
|
* https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
Docker for Linux 不支持构建 `arm` 架构镜像,我们可以运行一个新的容器让其支持该特性,Docker 桌面版无需进行此项设置。
|
Docker for Linux 不支持构建 `arm` 架构镜像,我们可以运行一个新的容器让其支持该特性,Docker 桌面版无需进行此项设置。
|
||||||
|
|
||||||
```bash
|
```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) 镜像替换官方镜像。
|
由于 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
|
$ 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
|
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"]
|
||||||
|
```
|
||||||
|
|
|
@ -60,10 +60,10 @@ $ sysctl --system
|
||||||
```bash
|
```bash
|
||||||
# 启用 ipvs 相关内核模块
|
# 启用 ipvs 相关内核模块
|
||||||
[Service]
|
[Service]
|
||||||
ExecStartPre=-modprobe ip_vs
|
ExecStartPre=-/sbin/modprobe ip_vs
|
||||||
ExecStartPre=-modprobe ip_vs_rr
|
ExecStartPre=-/sbin/modprobe ip_vs_rr
|
||||||
ExecStartPre=-modprobe ip_vs_wrr
|
ExecStartPre=-/sbin/modprobe ip_vs_wrr
|
||||||
ExecStartPre=-modprobe ip_vs_sh
|
ExecStartPre=-/sbin/modprobe ip_vs_sh
|
||||||
```
|
```
|
||||||
|
|
||||||
执行以下命令应用配置。
|
执行以下命令应用配置。
|
||||||
|
|
Loading…
Reference in New Issue