LoginSignup
23
25

More than 5 years have passed since last update.

DockerCE18.06で使えるBuildKitを使おう

Last updated at Posted at 2018-07-20

概要

2018/07/19にリリースされたDockerの18.06バージョンでは、BuildKitというものが実験的に統合されて使えるようになり、
ビルドが30倍速くなる(こともある)! とDockerのMeetupで教えてもらったので、Docker初心者がそれを試す手がかりとして、これを残します。

紹介されていたのは、こちらの資料です。
DockerCon参加報告 (docker buildが30倍以上速くなる話など)

なぜ速くなるのか

ものすごく簡単に言ってしまうと、2点だと思います。

  1. 並列処理するから
  2. キャッシュを有効活用するから

これまでマルチステージでDockerfileを書いていても、上から順に、シーケンシャルにしか処理してくれませんでした。
それを依存関係を加味して、並列で実行することで処理時間を短縮しよう、と。

また、mavenやgoなどで使ったパッケージマネージャのリソース、aptやyumのキャッシュを有効に使うことで処理時間を短縮しよう、というアプローチのように見えます。

キャッシュを使う RUN --mountは、今のDockerfileを書き換えないとできませんが、並列ビルドは 今お使いのDockerfile そのままで使える、と言われたら魅力的ではありませんか?

環境準備

Dockerのバージョンアップ

Dockerのバージョンを18.06にします。
ちゃんと18.06になっているか、コマンドでも確認しておきましょう。


docker --version

1.png

環境変数の設定

スライドにあるように、環境変数を設定します。

export DOCKER_BUILDKIT=1

experimentalを有効にする。

実験的に統合ということなので、experientalを有効にします。

有効になっているかどうかの確認

docker version

と入力して、表示された内容を確認します。

2.png

ServerのところのExperimentalがfalseになっていたら、有効になっていません。次に進みましょう。

Experimentalを有効にする

/etc/docker/daemon.json を以下の内容で作成します。

{
    "experimental": true
}

/etc/dockerの所有者が誰になっているかを確認して、必要であればsudoするなりして編集しましょう。
aws ec2でubuntu環境でDockerを入れて試していますが、ここはrootになっていました。

編集が終ったらdockerを再起動します。

sudo service docker restart

有効になっているか確認

再度確認してみます。

docker version

3.png

Experimentalがtrueになっていることを確認してください。

普通にdocker build

今まで白い文字に、たまにエラーや警告の赤い文字だったビルド画面が、青っぽい画面になりました。

4.png

全く同じDockerfileを、DOCKER_BUILDKIT=0にしてやってみると、こんな感じのものです。

5.png

単純なDockerfileだったため、30倍!というほど顕著な改善は見られませんでしたが、
「今のままそのままで、速くなる」というのであれば、やらない手はないです!

トラブルシュート

buildkit not supported by daemon

こんなエラーがdocker buildを実行したときに返された方は、docker versionでexperimentalがtrueになっているか、有効になっているかをご確認ください。
Experimentalがfalseだと、このエラーになります。

なお、ClientとServerの両方にExperimentalがありますが、設定するのはServerの方でした。

情報入手元

Dockerステッカー ありがたく頂戴いたしました。

23
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
25