oracle/database:11.2.0.2-xe をビルドするときは buildkit を無効にする

状況

Oracle の公開しているリソースを利用すると Oracle Database 11g R2 (XE) のコンテナイメージをビルドできるみたいなので試してみた。

Docker daemon のバージョンはこんな感じ。

$ env|sort|grep DOCKER
DOCKER_CERT_PATH=C:\Users\user\.minikube\certs
DOCKER_HOST=tcp://192.168.3.14:2376
DOCKER_TLS_VERIFY=1
DOCKER_BUILDKIT=1

$ docker version
Client:
 Version:           19.03.1
 API version:       1.40
 Go version:        go1.12.7
 Git commit:        74b1e89e8a
 Built:             Wed Jul 31 15:18:18 2019
 OS/Arch:           windows/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:49:35 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

問題

  • DOCKER_BUILDKIT=1 にしていると docker build がハングアップする

    • RUN 命令の yum install がスタックする
    • ベースイメージの oraclelinux:7-slim で実行したら普通に動くのでお手上げになった
    • 詳しい原因は分からない
  • Oracle RAC について問題は異なるけどやはり buildkit に起因する失敗が報告されてる

回避策

  • docker build するときは DOCKER_BUILDKIT=0 にする