プログラミング

Macでdocker BuildKitを試してみた

-プログラミング

はじめに

久しぶりに勉強する時間が出来たので、
先日参加させていただいたこちらの勉強会「さくらの夕べ」で激推しされていた「BuildKit」試してみました。
techplay.jp

そのときの資料はこちら
Dockerfileを改善するためのBest Practice 2019年版

サクッと試すためにAWS(AmazonLinux2)にdockerを入れて試しました。
バージョンも「18.08.1-ce」となっているので、BuildKitに対応しています。
※コマンドはすべてroot権限で実行してます。

1.環境

OS:AmazonLinux2
docker ver: version 18.06.1-ce

AmazonLinux2にdockerをいれるには、

sudo yum install -y docker

を実行すればOKです。

2.Dockerfile作成

簡単に動確するだけなのでCentOS上でhttpdを起動させるだけのシンプルなものにしました。
以下のDockerfileを作成し、「/home/ec2-user/」に配置します。

Dockerfile

FROM centos:7.5.1804
RUN yum install -y httpd iproute && yum clean all
RUN echo "Hello Apach." > /var/www/html/index.html
RUN systemctl enable httpd

f:id:sya_mu-neco:20190623210758p:plain

3.BuildKtの有効化

環境変数設定

ホストOS(AmazonLinux2)に以下のコマンドを実行し、環境変数を追加します。

export DOCKER_BUILDKIT=1

experiental有効化

sudo vi /etc/docker/daemon.json

daemon.jsonを作成

中身

{
"experimental": true
}

docker再起動

sudo service docker restart

でdockerを再起動

確認

docker version

を実行し、ExperimentalがtrueになっていればOKです。
f:id:sya_mu-neco:20190623211648p:plain

4.docker build

BuildKitが有効になっている状態で「docker build」をしてみます。
コマンドの経過が青くなり、一瞬(体感1秒かからない程度)で完了しました。

docker image build -f ./Dockerfile -t centos:build-test-01 .

f:id:sya_mu-neco:20190623213527p:plain

確認のため、BuildKitが無効になっている状態で「docker build」をしてみます。
今まで通りですね。10秒程度かかかりました。

 export DOCKER_BUILDKIT=0
docker image build -f ./Dockerfile -t centos:build-test-01 .

f:id:sya_mu-neco:20190623213931p:plain

BuildKitを入れることで、実行速度が改善されてることが確認できました。

まとめ

今回は、シンプルなBuildでしたがこれでもBuildKitの恩恵を体感することが出来ました。
より複雑なBuildだともっと大きな恩恵を受けれるように思います。
興味もたれた方は、設定も簡単なので是非BuildKitを試してみてください。

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

Docker実践ガイド 第2版 (impress top gear)

Docker実践ガイド 第2版 (impress top gear)

-プログラミング