目的
Dockerの18.06.0-ce
においてexperimentalな機能として
DockerのコンテナイメージビルダとしてBuildKitが組み込まれました。
その利用方法を説明します。
使い方
edge版を導入し、Engineのversionが18.06.0-ce-rc3
であることを確認する。
DockerのドロップダウンメニューからPreferences
を開く。
Experimental
のチェックボックスをONにして、Apply & Restart
ボタンをクリックしてdockerを再起動します。
docker-infoの結果
$ docker info
Containers: 20
Running: 20
Paused: 0
Stopped: 0
Images: 25
Server Version: 18.06.0-ce-rc3
〜〜〜〜〜中略〜〜〜〜〜
Labels:
Experimental: true # ここがtrueになっていることを確認する
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
環境変数にDOCKER_BUILDKIT=1
を追加する。
~/.bash_profile
の末尾にでも入れればいいのではないかな。
DockerのCLI側設定
$ echo 'DOCKER_BUILDKIT=1' >> ~/.bash_profile
$ source ~/.bash_profile
$ env | grep DOCKER_BUILDKIT
DOCKER_BUILDKIT=1
イメージをビルドするといつも見慣れたイメージビルドの表示ではなく、
あまり見慣れない感じで進みます。
一部のビルドステップが並列で進むことも確認できました。
動作確認
$ docker build -t test -f ./dockerfile/test `pwd`
[+] Building 13.5s (8/8) FINISHED
=> local://dockerfile (test) 0.0s
=> => transferring dockerfile: 212B 0.0s
=> local://context (.dockerignore) 0.0s
=> => transferring context: 02B 0.0s
=> CACHED docker-image://docker.io/tonistiigi/copy:v0.1.3@sha256:e57a3b4d6240f55 0.0s
=> docker-image://docker.io/library/nginx:1.14@sha256:9b52c379180db988f7ff5f90ea 7.5s
=> => resolve docker.io/library/nginx:1.14@sha256:9b52c379180db988f7ff5f90ea851b 0.0s
=> => sha256:f4eba7658e18b5014950e0014eef035705bee0d89ededc66e564fd6 201B / 201B 3.0s
=> => sha256:9b52c379180db988f7ff5f90ea851bf502fdf35c6b96b3bf649 2.03kB / 2.03kB 0.0s
=> => sha256:c6ba044660fad5d45cb3ee11063f39af0dd56b775c21baff28e4bb4 948B / 948B 0.0s
=> => sha256:8ae4d16b741a05f342a364d7012848cca66872706b90ea4bfbb 6.00kB / 6.00kB 0.0s
=> => sha256:b4babd36efe54ae56731a12912fca977eb2767d797444f299 22.11MB / 22.11MB 6.6s
=> => extracting sha256:b4babd36efe54ae56731a12912fca977eb2767d797444f299ddd8666 0.6s
=> => extracting sha256:f4eba7658e18b5014950e0014eef035705bee0d89ededc66e564fd6f 0.0s
=> local://context 0.0s
=> => transferring context: 2.80kB 0.0s
=> copy /src-0/default.conf etc/nginx/conf.d/default.conf 0.5s
=> copy /src-0/nginx.conf etc/nginx/nginx.conf 0.4s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:f2f797226f1fa3a4b9c22d2ae640f6006f0f0db07b8e9bfe0bf26 0.0s
=> => naming to docker.io/library/test 0.0s