[container][docker][buildkit] docker 18.09環境でBuildKitを有効にすると、名前解決に失敗する。

AIX、UNIX、LinuxContainer
rye-jessen-785346-unsplash

以前に上記なような記事を書いており、そのときから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の情報

おやと思い検索してみると以下のようなものが見つかりました。

どうやら、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することは検討中です)

この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました