Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
EN
Upload
Download free for 30 days
Sign in
AS
Uploaded by
Akihiro Suda
PPTX, PDF
45,773 views
BuildKitによる高速でセキュアなイメージビルド
https://build.connpass.com/event/98947/
Software
◦
Read more
24
Save
Share
Embed
Save to Drive
Download now
Downloaded 50 times
1
/ 27
2
/ 27
3
/ 27
Most read
4
/ 27
5
/ 27
Most read
6
/ 27
7
/ 27
8
/ 27
9
/ 27
10
/ 27
11
/ 27
12
/ 27
Most read
13
/ 27
14
/ 27
15
/ 27
16
/ 27
17
/ 27
18
/ 27
19
/ 27
20
/ 27
More Related Content
PDF
BuildKitの概要と最近の機能
by
Kohei Tokunaga
34 slides
6.7K views
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
32 slides
141K views
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
36 slides
19.4K views
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
63 slides
15.4K views
PDF
Dockerfile を書くためのベストプラクティス解説編
by
Masahito Zembutsu
51 slides
90.6K views
PDF
例外設計における大罪
by
Takuto Wada
37 slides
76.9K views
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
PDF
DockerとPodmanの比較
by
Akihiro Suda
37 slides
64.8K views
BuildKitの概要と最近の機能
by
Kohei Tokunaga
34 slides
6.7K views
マイクロにしすぎた結果がこれだよ!
by
mosa siru
32 slides
141K views
Dockerからcontainerdへの移行
by
Kohei Tokunaga
36 slides
19.4K views
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
63 slides
15.4K views
Dockerfile を書くためのベストプラクティス解説編
by
Masahito Zembutsu
51 slides
90.6K views
例外設計における大罪
by
Takuto Wada
37 slides
76.9K views
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
45 slides
174.7K views
DockerとPodmanの比較
by
Akihiro Suda
37 slides
64.8K views
What's hot
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
by
NTT DATA Technology & Innovation
84 slides
4.8K views
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
60 slides
44.8K views
PPTX
Istioサービスメッシュ入門
by
Yoichi Kawasaki
52 slides
39.8K views
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
96 slides
37.4K views
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
33 slides
129.9K views
PPTX
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
49 slides
5.1K views
PDF
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
57 slides
79.8K views
PDF
分散トレーシング技術について(Open tracingやjaeger)
by
NTT Communications Technology Development
25 slides
24.2K views
PDF
Docker Compose 徹底解説
by
Masahito Zembutsu
123 slides
63.5K views
PPTX
Dockerからcontainerdへの移行
by
Akihiro Suda
36 slides
10.8K views
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
56 slides
889.1K views
PDF
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
by
Google Cloud Platform - Japan
62 slides
5.6K views
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
49 slides
25.4K views
PDF
PostgreSQL 15の新機能を徹底解説
by
Masahiko Sawada
38 slides
2.3K views
PPTX
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
by
NTT DATA Technology & Innovation
27 slides
1.7K views
PPTX
トランザクションの設計と進化
by
Kumazaki Hiroki
61 slides
74.5K views
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
65 slides
109.5K views
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
123 slides
3.2K views
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
84 slides
3.6K views
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
by
sairoutine
54 slides
9.9K views
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
by
NTT DATA Technology & Innovation
84 slides
4.8K views
マイクロサービス 4つの分割アプローチ
by
増田 亨
60 slides
44.8K views
Istioサービスメッシュ入門
by
Yoichi Kawasaki
52 slides
39.8K views
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
96 slides
37.4K views
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
33 slides
129.9K views
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
49 slides
5.1K views
AWSのログ管理ベストプラクティス
by
Akihiro Kuwano
57 slides
79.8K views
分散トレーシング技術について(Open tracingやjaeger)
by
NTT Communications Technology Development
25 slides
24.2K views
Docker Compose 徹底解説
by
Masahito Zembutsu
123 slides
63.5K views
Dockerからcontainerdへの移行
by
Akihiro Suda
36 slides
10.8K views
オンラインゲームの仕組みと工夫
by
Yuta Imai
56 slides
889.1K views
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
by
Google Cloud Platform - Japan
62 slides
5.6K views
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
49 slides
25.4K views
PostgreSQL 15の新機能を徹底解説
by
Masahiko Sawada
38 slides
2.3K views
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
by
NTT DATA Technology & Innovation
27 slides
1.7K views
トランザクションの設計と進化
by
Kumazaki Hiroki
61 slides
74.5K views
Redisの特徴と活用方法について
by
Yuji Otani
65 slides
109.5K views
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
by
Naoya Kishimoto
123 slides
3.2K views
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
84 slides
3.6K views
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
by
sairoutine
54 slides
9.9K views
Similar to BuildKitによる高速でセキュアなイメージビルド
PPTX
BuildKitによる高速でセキュアなイメージビルド (LT)
by
Akihiro Suda
18 slides
559 views
PPTX
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
by
Akihiro Suda
25 slides
20.8K views
PDF
[Docker Tokyo #35] Docker 20.10
by
Akihiro Suda
20 slides
3.8K views
PDF
[CNDT] 最近のDockerの新機能
by
Akihiro Suda
35 slides
12.2K views
PDF
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
by
Masahiro Nagano
128 slides
33.1K views
PPTX
Docker 18.09 新機能
by
Akihiro Suda
25 slides
4.6K views
PDF
Docker実践入門
by
hiro nemu
55 slides
7.5K views
PDF
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
by
Akihiro Suda
55 slides
24.9K views
PDF
Docker for Windows & Web Apps for Containers 実践活用技法
by
Microsoft Corporation
61 slides
4.5K views
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方
by
Yuichi Ito
63 slides
69.4K views
PPTX
Sakura no-yuube-20140327
by
Kunihiro TANAKA
104 slides
2.2K views
PDF
Docker handson
by
koda3
118 slides
454 views
PDF
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
by
Kunihiro TANAKA
25 slides
14.4K views
PPTX
Docker超入門
by
VirtualTech Japan Inc.
46 slides
9.3K views
PPTX
Docker & Kubernetes基礎
by
Daisuke Hiraoka
30 slides
2.1K views
PDF
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
by
Naoki Nagazumi
111 slides
18.4K views
PDF
Docker事始めと最新動向 2015年6月
by
Emma Haruka Iwao
54 slides
5K views
PDF
Dockerの仕組みとIIJ社内での利用例
by
maebashi
37 slides
18.1K views
PDF
Dockerイメージ構築 実践テクニック
by
Emma Haruka Iwao
38 slides
23.1K views
PDF
Docker社内勉強会
by
osamu_takezawa
25 slides
1.1K views
BuildKitによる高速でセキュアなイメージビルド (LT)
by
Akihiro Suda
18 slides
559 views
DockerCon参加報告 (`docker build`が30倍以上速くなる話など)
by
Akihiro Suda
25 slides
20.8K views
[Docker Tokyo #35] Docker 20.10
by
Akihiro Suda
20 slides
3.8K views
[CNDT] 最近のDockerの新機能
by
Akihiro Suda
35 slides
12.2K views
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
by
Masahiro Nagano
128 slides
33.1K views
Docker 18.09 新機能
by
Akihiro Suda
25 slides
4.6K views
Docker実践入門
by
hiro nemu
55 slides
7.5K views
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
by
Akihiro Suda
55 slides
24.9K views
Docker for Windows & Web Apps for Containers 実践活用技法
by
Microsoft Corporation
61 slides
4.5K views
Docker入門: コンテナ型仮想化技術の仕組みと使い方
by
Yuichi Ito
63 slides
69.4K views
Sakura no-yuube-20140327
by
Kunihiro TANAKA
104 slides
2.2K views
Docker handson
by
koda3
118 slides
454 views
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
by
Kunihiro TANAKA
25 slides
14.4K views
Docker超入門
by
VirtualTech Japan Inc.
46 slides
9.3K views
Docker & Kubernetes基礎
by
Daisuke Hiraoka
30 slides
2.1K views
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
by
Naoki Nagazumi
111 slides
18.4K views
Docker事始めと最新動向 2015年6月
by
Emma Haruka Iwao
54 slides
5K views
Dockerの仕組みとIIJ社内での利用例
by
maebashi
37 slides
18.1K views
Dockerイメージ構築 実践テクニック
by
Emma Haruka Iwao
38 slides
23.1K views
Docker社内勉強会
by
osamu_takezawa
25 slides
1.1K views
More from Akihiro Suda
PDF
20260730 [KubeCon JP Pavilion] Lima.pdf_
by
Akihiro Suda
13 slides
2 views
PDF
20260518 [OSS NA] Alcoholless - Lightweight security sandbox for Homebrew, AI...
by
Akihiro Suda
14 slides
21 views
PDF
20260325 [KubeCon EU Pavilion] Lima.pdf_
by
Akihiro Suda
12 slides
14 views
PDF
20260325 [KubeCon EU] Lima Project Updates.pdf
by
Akihiro Suda
33 slides
6 views
PDF
20260324 [KubeCon EU Pavilion] containerd.pdf
by
Akihiro Suda
10 slides
27 views
PDF
20260201 [FOSDEM] gomodjail - library sandboxing for Go modules.pdf
by
Akihiro Suda
38 slides
45 views
PDF
20260131 [FOSDEM] Lima v2.0 - expanding the focus to hardening AI.pdf
by
Akihiro Suda
27 slides
31 views
PDF
20251113 [KubeCon NA Pavilion] Lima.pdf_
by
Akihiro Suda
11 slides
19 views
PDF
20251112 [KubeCon NA Pavilion] containerd.pdf
by
Akihiro Suda
10 slides
33 views
PDF
20250617 [KubeCon JP 2025] containerd - Project Update and Deep Dive.pdf
by
Akihiro Suda
35 slides
43 views
PDF
20250616 [KubeCon JP 2025] VexLLM - Silence Negligible CVE Alerts Using LLM.pdf
by
Akihiro Suda
11 slides
43 views
PDF
20250403 [KubeCon EU] containerd - Project Update and Deep Dive.pdf
by
Akihiro Suda
23 slides
68 views
PDF
20250403 [KubeCon EU Pavilion] containerd.pdf
by
Akihiro Suda
9 slides
56 views
PDF
20250402 [KubeCon EU Pavilion] Lima.pdf_
by
Akihiro Suda
9 slides
67 views
PDF
20241115 [KubeCon NA Pavilion] Lima.pdf_
by
Akihiro Suda
8 slides
81 views
PDF
20241113 [KubeCon NA Pavilion] containerd.pdf
by
Akihiro Suda
15 slides
69 views
PDF
【情報科学若手の会 (2024/09/14】なぜオープンソースソフトウェアにコントリビュートすべきなのか
by
Akihiro Suda
37 slides
1.2K views
PDF
【Vuls祭り#10 (2024/08/20)】 VexLLM: LLMを用いたVEX自動生成ツール
by
Akihiro Suda
11 slides
202 views
PDF
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
by
Akihiro Suda
15 slides
77 views
PDF
20240321 [KubeCon EU Pavilion] Lima.pdf_
by
Akihiro Suda
10 slides
72 views
20260730 [KubeCon JP Pavilion] Lima.pdf_
by
Akihiro Suda
13 slides
2 views
20260518 [OSS NA] Alcoholless - Lightweight security sandbox for Homebrew, AI...
by
Akihiro Suda
14 slides
21 views
20260325 [KubeCon EU Pavilion] Lima.pdf_
by
Akihiro Suda
12 slides
14 views
20260325 [KubeCon EU] Lima Project Updates.pdf
by
Akihiro Suda
33 slides
6 views
20260324 [KubeCon EU Pavilion] containerd.pdf
by
Akihiro Suda
10 slides
27 views
20260201 [FOSDEM] gomodjail - library sandboxing for Go modules.pdf
by
Akihiro Suda
38 slides
45 views
20260131 [FOSDEM] Lima v2.0 - expanding the focus to hardening AI.pdf
by
Akihiro Suda
27 slides
31 views
20251113 [KubeCon NA Pavilion] Lima.pdf_
by
Akihiro Suda
11 slides
19 views
20251112 [KubeCon NA Pavilion] containerd.pdf
by
Akihiro Suda
10 slides
33 views
20250617 [KubeCon JP 2025] containerd - Project Update and Deep Dive.pdf
by
Akihiro Suda
35 slides
43 views
20250616 [KubeCon JP 2025] VexLLM - Silence Negligible CVE Alerts Using LLM.pdf
by
Akihiro Suda
11 slides
43 views
20250403 [KubeCon EU] containerd - Project Update and Deep Dive.pdf
by
Akihiro Suda
23 slides
68 views
20250403 [KubeCon EU Pavilion] containerd.pdf
by
Akihiro Suda
9 slides
56 views
20250402 [KubeCon EU Pavilion] Lima.pdf_
by
Akihiro Suda
9 slides
67 views
20241115 [KubeCon NA Pavilion] Lima.pdf_
by
Akihiro Suda
8 slides
81 views
20241113 [KubeCon NA Pavilion] containerd.pdf
by
Akihiro Suda
15 slides
69 views
【情報科学若手の会 (2024/09/14】なぜオープンソースソフトウェアにコントリビュートすべきなのか
by
Akihiro Suda
37 slides
1.2K views
【Vuls祭り#10 (2024/08/20)】 VexLLM: LLMを用いたVEX自動生成ツール
by
Akihiro Suda
11 slides
202 views
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
by
Akihiro Suda
15 slides
77 views
20240321 [KubeCon EU Pavilion] Lima.pdf_
by
Akihiro Suda
10 slides
72 views
BuildKitによる高速でセキュアなイメージビルド
1.
Copyright©2018 NTT Corp.
All Rights Reserved. NTT ソフトウェアイノベーションセンタ 須田 瑛大 BuildKitによる 高速でセキュアなイメージビルド Container Build Meetup#1 (2018/10/09) https://slideshare.net/AkihiroSuda
2.
2 Copyright©2018 NTT Corp.
All Rights Reserved. • コンテナ関連OSSのメンテナ(いわゆるコミッタ)を務めている • Docker Moby メンテナ (2016年11月~) • 2017年4月,OSSプロジェクトとしてのDockerはMobyに名前が変わった • 商用製品としてのDockerはMobyをベースとして開発されている • Moby BuildKitメンテナ (2017年夏 プロジェクト発足時~) • 次世代 `docker build` • CNCF containerdメンテナ (2017年9月~) • Kubernetesなどで利用できる次世代コンテナランタイム : ≒ : RHEL Fedora 自己紹介
3.
3 Copyright©2018 NTT Corp.
All Rights Reserved. • Dockerfileと呼ばれるシェルスクリプト風言語を用いて,コンテナイメー ジをビルドする • 各命令は,overlayfsなどのCopy-on-Writeファイルシステムを用いてキ ャッシュされる `docker build` の復習 mount –t overlay –o lowerdir=0,upperdir=1 .. FROM golang:1.11 COPY . /go/src/github.com/foo/bar RUN go build –o /bar github.com/foo/bar mount –t overlay –o lowerdir=1,upperdir=2 ..
4.
4 Copyright©2018 NTT Corp.
All Rights Reserved. • Docker 17.05からはマルチステージDockerfileが利用可能 • 最終的なイメージのサイズを小さくできる `docker build` の復習 FROM golang:1.11 AS foobar COPY . /go/src/github.com/foo/bar RUN go build –o /bar github.com/foo/bar FROM alpine:3.7 COPY –-from=foobar /bar / "bar"だけを 最終的なイメージに コピー
5.
5 Copyright©2018 NTT Corp.
All Rights Reserved. • `docker build`を実行するには,(`docker run`などと同様に)Docker デーモンがroot権限で起動している必要がある • `docker build`は`docker run`に似ているが,セキュリティ上の観点な どから,機能が制限されている • ボリューム機能が無い (`docker run -v`, `docker run --mount`) • privilegedモードが無い (`docker run –-privileged`) `docker build` の復習
6.
6 Copyright©2018 NTT Corp.
All Rights Reserved. • Dockerfileのキャッシュが効きにくい • DockerfileのN行目を書き換えると,N+1行目以降のキャッシュは破棄される • ユーザはDockerfileの命令の順序に気をつける必要がある • コンパイラやパッケージマネージャのキャッシュが保存されない • ~/.m2 (Maven), ~/.cache/go-build (Go), /var/cache/apt (apt) など • ビルドコンテキストの転送に時間がかかる • ソースを1行編集しただけでも,ソース全体をtar ballとしてデーモンに送信する必要 がある 従来の`docker build`に対する不満: パフォーマンス FROM debian EXPOSE 80 RUN apt update && apt install –y HEAVY-PACKAGES EXPOSEを書き換えるだけでRUNのキャッシュが効かなくなる
7.
7 Copyright©2018 NTT Corp.
All Rights Reserved. • 並列実行できるはずの命令を,並列実行してくれない 従来の`docker build`に対する不満: パフォーマンス FROM golang AS stage0 ... RUN go build –o /foo ... FROM clang AS stage1 ... RUN clang –o /bar ... FROM debian AS stage2 COPY --from=stage0 /foo /usr/local/bin/foo COPY --from=stage1 /bar /usr/local/bin/bar 0 2 1 各ステージの依存性は DAGとして表現できる
8.
8 Copyright©2018 NTT Corp.
All Rights Reserved. • 並列実行できるはずの命令を,並列実行してくれない 従来の`docker build`に対する不満: パフォーマンス FROM golang AS stage0 ... RUN go build –o /foo ... FROM clang AS stage1 ... RUN clang –o /bar ... FROM debian AS stage2 COPY --from=stage0 /foo /usr/local/bin/foo COPY --from=stage1 /bar /usr/local/bin/bar 0 2 1 0 1 2 シーケンシャルにしか 実行してくれない
9.
9 Copyright©2018 NTT Corp.
All Rights Reserved. • プライベートなGitやS3などへのアクセスが困難 • `COPY`命令で鍵を置くのは危ない • ステージを分けるか `--squash` しないと鍵が漏れる • 環境変数を使うのも危ない 従来の`docker build`に対する不満: セキュリティ FROM ... COPY id_rsa ~/.ssh RUN git clone ssh://... RUN rm –f ~/.ssh/id_rsa rmしてもレイヤの tarからは消えない
10.
10 Copyright©2018 NTT Corp.
All Rights Reserved. • root権限が必要であるため,HPC環境や,Kubernetesクラスタ上などで は,利用を許可されないことがある • 個人上のラップトップ上で実行する場合でも,セキュリティ上のリスクが 大きい • CVE-2014-9356:不正なDockerfileをビルドすると,ホストのroot権限を奪取される (シンボリックリンクを扱う部分のバグ) • CVE-2014-9357:同 (LZMAアーカイブを扱う部分のバグ) 従来の`docker build`に対する不満: セキュリティ
11.
11 Copyright©2018 NTT Corp.
All Rights Reserved. • DAG構造を備える中間言語であるLLBを用いる • Protocol Buffers形式 • 依存性を正確に表現できるので,キャッシュがよく効く • 命令を並列実行できる • LLBは主にDockerfileからコンパイルされる • Dockerfile以外の言語からのコンパイルも可能 (Heroku, CFのBuildpacksなど) • 他にも,コンテキストの差分転送などの最適化有り BuildKit: 次世代 `docker build` コンパイル Dockerfile LLB DAG Buildpacksなど docker-image://alpine Image git://foo/bar docker-image://gcc Run("apk add ..")Run("make") 3命令を同時に実行できる 2
12.
12 Copyright©2018 NTT Corp.
All Rights Reserved. • DAG構造はマルチステージDockerfileを用いて簡単に記述できる BuildKit: 次世代 `docker build` FROM golang AS stage0 ... RUN go build –o /foo ... FROM clang AS stage1 ... RUN clang –o /bar ... FROM debian AS stage2 COPY --from=stage0 /foo /usr/local/bin/foo COPY --from=stage1 /bar /usr/local/bin/bar 0 2 1
13.
13 Copyright©2018 NTT Corp.
All Rights Reserved. • Docker v18.06以降には,BuildKitが組み込まれている • コマンドラインは従来の `docker build` と同じ • クライアント側で `export DOCKER_BUILDKIT=1` すると有効になる • Docker v18.06では,加えて Docker daemonをexperimentalモードで起動する必要 がある (Docker v18.09以降では不要) • ただし,`docker build`コマンドでは,BuildKitの全ての機能が使えるわ けではない • 例えば,後述するssh-agent連携機能は未だ使えない • `buildkitd`(BuildKit単体のデーモン) と `buildctl` (クライアント)を使えば,全 ての機能が使える • コマンドラインは`docker build`より複雑 BuildKitの使い方 v18.09は10月中にはリリースされるはず..
14.
14 Copyright©2018 NTT Corp.
All Rights Reserved. • DAGはマルチステージDockerfileを用いて記述できる BuildKit: 次世代 `docker build` FROM golang AS stage0 ... RUN go build –o /foo ... FROM clang AS stage1 ... RUN clang –o /bar ... FROM debian AS stage2 COPY --from=stage0 /foo /usr/local/bin/foo COPY --from=stage1 /bar /usr/local/bin/bar 0 2 1 https://t.co/aUKqQCVmXa より引用
15.
15 Copyright©2018 NTT Corp.
All Rights Reserved. https://t.co/aUKqQCVmXa より引用
16.
16 Copyright©2018 NTT Corp.
All Rights Reserved. https://t.co/aUKqQCVmXa より引用
17.
17 Copyright©2018 NTT Corp.
All Rights Reserved. https://t.co/aUKqQCVmXa より引用
18.
18 Copyright©2018 NTT Corp.
All Rights Reserved. • Dockerfileの最初の行に `# syntax = ${FRONTEND_IMAGE}` を指定する と,非標準の命令を利用できる • `${FRONTEND_IMAGE}` には,DockerfileをLLBに変換するプログラムを含んだコンテ ナイメージを指定する (つまり,新しい命令や構文を自作できる!) • 例: `RUN –-mount=type=cache` • コンパイラやパッケージマネージャのキャッシュディレクトリを保持できる • 将来的には,`# syntax = ...` を指定しなくても標準で利用できるようになるものと 思われる 新しいDockerfile構文: `RUN –-mount=type=cache` # syntax = tonistiigi/dockerfile:runmount20181002 ... RUN --mount=type=cache,target=/root/.cache go build ... https://github.com/moby/buildkit/pull/442 https://github.com/moby/buildkit/pull/455
19.
19 Copyright©2018 NTT Corp.
All Rights Reserved. https://t.co/aUKqQCVmXa より引用 Docker v18.03比で30倍以上高速!
20.
20 Copyright©2018 NTT Corp.
All Rights Reserved. • S3やSSHの鍵を,`RUN`コンテナ内に安全にマウントできる • マウントされるだけなので,出力イメージ内には残らない • SSHの鍵にパスフレーズを設定している場合は,後述する `RUN –-mount=type=ssh` を用いる • Docker v18.09から利用可能 新しいDockerfile構文: `RUN –-mount=type=secret` # syntax = tonistiigi/dockerfile:secrets20181002 ... RUN --mount=type=secret,id=aws,target=/root/.aws/credentials aws s3 cp s3://... ... $ docker build –-secret id=aws,src=~/.aws/credentials ... https://github.com/moby/buildkit/pull/567
21.
21 Copyright©2018 NTT Corp.
All Rights Reserved. • クライアントのssh-agentソケット(SSH_AUTH_SOCK)に,`RUN`コンテナか らアクセスできる • Docker v19.03から利用可能となる見込み (buildctlでなら今すぐ使える) • あるいはv18.09に入るかも 新しいDockerfile構文: `RUN –-mount=type=ssh` # syntax = tonistiigi/dockerfile:ssh20181005 ... RUN --mount=type=ssh git clone ssh://gitlab.com/... $ eval $(ssh-agent) $ ssh-add ~/.ssh/id_rsa (パスフレーズ入力) $ buildctl build –-ssh default=$SSH_AUTH_SOCK ... https://github.com/moby/buildkit/pull/608 https://github.com/moby/buildkit/pull/655
22.
22 Copyright©2018 NTT Corp.
All Rights Reserved. • Heroku・Cloud FoundryのBuildpacksも,`docker build`から直接ビ ルドできる • やはりLLBに変換されて実行される Dockerfile以外の言語 # syntax = tonistiigi/pack --- applications: - name: myapp memory: 128MB disk_quota: 256MB random-route: true buildpack: python_buildpack command: python hello.py $ docker build –f manifest.yml ... https://github.com/tonistiigi/buildkit-pack
23.
23 Copyright©2018 NTT Corp.
All Rights Reserved. • 複数のアーキテクチャに対応したイメージをビルドできる • アーキテクチャ毎にtarレイヤを作り,1つのマニフェストにまとめる • QEMUのusermode emulationをbinfmtで登録しておくことで,他アーキ テクチャのバイナリの`RUN`も可能 • full system emulation (いわゆるVM) ではない • Docker v19.XXで利用可能となる見込み (buildctlでなら今すぐ使える) マルチアーキテクチャ対応 $ buildctl build –-platform=linux/amd64,linux/arm64,linux/arm/v6 ... https://asciinema.org/a/GYOx4B88r272HWrLTyFwo156s https://github.com/moby/buildkit/pull/499 https://github.com/moby/moby/issues/32487 ... ENV GOOS=$TARGETOS GOARCH=$TARGETARCH ...
24.
24 Copyright©2018 NTT Corp.
All Rights Reserved. • User namespaceを用いることで,buildkitdを一般ユーザ権限で実行可能 • Docker daemon全体のroot権限不要化は,作業中: https://github.com/rootless- containers/usernetes • Docker v19.03までにはマージされる? • ただしoverlayfsを使えなくなる • overlayfsが使えなくなっても,XFSならreflinkを用いたCopy-on-Writeが可能 • Ubuntuのカーネルでは例外的にoverlayfsも利用可能 • 将来的にはFUSEを用いて対応予定 (要kernel 4.18以降) • Docker・Kubernetesのコンテナ内での一般ユーザとしての実行も可能 • Docker v18.06・Kubernetes v1.12以降では,`securityContext.procMount`の設 定が必要 (それより前のバージョンでは,`securityContext.privileged`が必要) root権限不要
25.
25 Copyright©2018 NTT Corp.
All Rights Reserved. • img: https://github.com/genuinetools/img • デーモン不要版のBuildKit • コマンドラインは `docker` とほぼ同じ • MicrosoftのJessie Frazelleが開発 デーモン無しでの実行も可能 (img) $ img build –t example.com/foo . $ img push example.com/foo $ img save example.com/foo | docker load
26.
26 Copyright©2018 NTT Corp.
All Rights Reserved. • Kubernetes・Knative上での分散ビルドの改善 • キャッシュやノード負荷情報を利用したスケジューリング • 単一のDockerfile内の各ステージを,別々のノードで実行 • キャッシュの自動ガーベジコレクション • OCI v1に代わるイメージフォーマット・配布プロトコルへの対応 • レイヤtarballの重複除去 • lazy-pulling対応 • P2Pへのネイティブ対応 • ...? BuildKitの将来
27.
27 Copyright©2018 NTT Corp.
All Rights Reserved. • Dockerfileの各ステージを並列実行できる • コンパイラやパッケージマネージャのキャッシュを使える • AWSやSSHなどの鍵を安全に扱える • Dockerfile以外の言語も使える (Buildpacksなど) • root権限無しで実行できる • 最新のDockerなら,`export DOCKER_BUILDKIT=1`するだけですぐに使える まとめ 従来より30倍以上 速くなることも
Editor's Notes
#2
20:30 - 21:10https://build.connpass.com/event/98947/