
以前に上記なような記事を書いており、そのときからBuildKitの恩恵に預かっていたのですが、今日docker buildしようとしたところ、パッケージアップデートの際に名前解決に失敗する現象に遭遇しました。
この問題について
docker buildの際に名前解決に失敗する件は、docker界隈では有名な感じらしく、以下のようなissueがあったりしますし、google検索を行ってもちらほらと見受けられます。
が、今回はちょっと違うようでして、/etc/docker/daemon.json
には、予めgoogleやCloudFlareなどを指定していたのですが、問題が解決しません。
うちの環境の場合
自分の環境では以下のような感じです。
$ docker version
Client:
Version: 18.09.1
API version: 1.39
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:42:36 2019
OS/Arch: linux/arm64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.1
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 4c52b90
Built: Wed Jan 9 19:03:16 2019
OS/Arch: linux/arm64
Experimental: true
$ docker build --rm -t kometchtech/zabbix-agent:4.0.3 zabbix-agent/
[+] Building 5.4s (8/14)
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 2.93kB 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/arm64v8/alpine:latest 0.0s
=> CACHED [internal] helper image for file operations 0.0s
=> CACHED [runtime 1/2] FROM docker.io/arm64v8/alpine:latest 0.0s
=> [internal] load build context 0.1s
=> => transferring context: 11.27kB 0.0s
=> ERROR [build 2/5] RUN apk add --update --no-cache -t .build-dep build-base clang autoconf automake openssl-dev 5.3s
=> ERROR [runtime 2/2] RUN addgroup zabbix && adduser -S -D -G zabbix -h /var/lib/zab 5.2s
------
> [build 2/5] RUN apk add --update --no-cache -t .build-dep build-base clang autoconf automake openssl-dev pcre-dev coreutils libevent-dev curl lld :
#9 1.149 fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/aarch64/APKINDEX.tar.gz
#9 3.154 WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/main/aarch64/APKINDEX.tar.gz: temporary error (try again later)
#9 3.155 fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/aarch64/APKINDEX.tar.gz
#9 5.163 WARNING: Ignoring http://dl-cdn.alpinelinux.org/alpine/v3.9/community/aarch64/APKINDEX.tar.gz: temporary error (try again later)
#9 5.163 ERROR: unsatisfiable constraints:
Webの情報
おやと思い検索してみると以下のようなものが見つかりました。
Support custom DNS from dockerd config · Issue #734 · moby/buildkit
Hi, i think that I stumbled upon a problem with buildkit and using our internal DNS server. Building the image without buildkit works fine, but if I use $ DOCKE...
buildkit + gcr.io private repos (credHelpers) do not stack · Issue #720 · moby/buildkit
Docker 18.09-ce here. I have FROM directive in my dockerfile pointing to a private registry: FROM gcr.io/... Running DOCKER_BUILDKIT=1 docker build . with this ...
どうやら、docker 18.09.1の環境でBuildKitを有効にしてbuildしようとすると失敗するみたいです。
/etc/resolv.confを編集したら問題が解消したという人もいましたが、自分の環境では改善しませんでした。
ということで、この問題が解決するまでは一旦BuildKitを無効にしておこうかと思います。
対応方法
buildkitを無効にすると問題なくbuildできることは確認しています。
$ DOCKER_BUILDKIT=0 docker build --rm -t kometchtech/zabbix-agent:4.0.3 zabbix-agent/
Sending build context to Docker daemon 16.38kB
Step 1/30 : FROM arm64v8/alpine:latest AS build
---> 37392b799685
Step 2/30 : ARG MAJOR_VERSION=4.0
---> Running in 2a7c65b5d225
Removing intermediate container 2a7c65b5d225
---> 2cf686d259cf
Step 3/30 : ARG ZBX_VERSION=${MAJOR_VERSION}.3
---> Running in d07e47a7c2d8
Removing intermediate container d07e47a7c2d8
---> 80eec9de45c8
Step 4/30 : ENV ZBX_VERSION=${ZBX_VERSION} ZBX_SOURCES=${ZBX_SOURCES}
---> Running in 0cfecc464224
Removing intermediate container 0cfecc464224
---> 226410982b5a
Step 5/30 : ARG ZBX_SOURCES="http://repo.zabbix.com/zabbix/${MAJOR_VERSION}/ubuntu/pool/main/z/zabbix/zabbix_${ZBX_VERSION}.orig.tar.gz"
---> Running in 7777b59bb373
Removing intermediate container 7777b59bb373
---> 19e70178e8fb
Step 6/30 : ENV BUILD_PKGS="build-base clang autoconf automake openssl-dev pcre-dev coreutils libevent-dev curl lld "
---> Running in 5cb60209ed6b
Removing intermediate container 5cb60209ed6b
---> 06833bc2c62e
Step 7/30 : ARG CFLAGS="-O2 -pthread -pipe -fPIC -fPIC -FORTIFY_SOURCE=2 -fPIE "
---> Running in 068d5c6c5903
Removing intermediate container 068d5c6c5903
---> c7cbad318eae
Step 8/30 : ARG CXXFLAGS="${CFLAGS}"
---> Running in 2dc674080a89
Removing intermediate container 2dc674080a89
---> df8253c00270
Step 9/30 : ARG LDFLAGS="-Wl,-O2 -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -fuse-ld=lld "
---> Running in 631af5141e4d
Removing intermediate container 631af5141e4d
---> 0628080b90c0
Step 10/30 : ENV CC="clang"
---> Running in a2da792d1192
Removing intermediate container a2da792d1192
---> 956f012af60f
Step 11/30 : ENV CXX="clang++"
---> Running in 0a749d9e4325
Removing intermediate container 0a749d9e4325
---> 752d8f373170
Step 12/30 : RUN apk add --update --no-cache -t .build-dep ${BUILD_PKGS}
---> Running in 091971258d29
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/aarch64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/aarch64/APKINDEX.tar.gz
(1/54) Installing binutils (2.31.1-r2)
(2/54) Installing libmagic (5.35-r0)
(3/54) Installing file (5.35-r0)
また、他の情報として、dockerでbuildせずに他のツールを使用するなどの方法もあるそうです。
まぁうちのメイン環境はAArch64/ARM64なんで使えないんですが・・・(自前でbuildすることは検討中です)