Build Docker Images with Bazel

2e1e9884fb61b5c0014818fc7e080f25?s=47 micnncim
September 05, 2019

Build Docker Images with Bazel

2e1e9884fb61b5c0014818fc7e080f25?s=128

micnncim

September 05, 2019
Tweet

Transcript

  1. @micnncim Build Docker Images with Bazel Docker Meetup Tokyo #32

  2. Presentation Outline Today's Agenda About Me How to build Docker

    Image? What is Bazel? How good is Bazel for Docker? How to use Bazel for Docker? Recap
  3. micnncim Twitter: @micnncim GitHub: @micnncim University Student / B4 Interest:

    Go, Cloud Native, DevOps Favorite Base Image: distroless Blog: micnncim.github.io
  4. Let's Build Docker Images EXPLORE THE WAYS TO BUILD DOCKER

    IMAGES
  5. How to build Docker Image? `docker image build` これまで Docker

    Image をビルドすると いえば、これ BuildKit, kaniko, Buildah, ... " 次世代 Docker ビルドツール" は たくさんある 特に BuildKit の勢いがある Bazel 今⽇紹介するのはこれ
  6. Bazel

  7. What is Bazel? Fast 並列ビルドと キャッシュによる差分ビルドで速い リモートキャッシュにも対応 Correct ツールのバージョン固定や sandbox

    化された環境でのビルドにより ワークスペースを汚染せず 再現性の⾼いビルドを⾏う Multi-language Docker に限らず 様々な⾔語・プラットフォームに対応 C++, Java, Python, Swift, Kotlin, Go, Rust, Scala, TypeScript, etc. Extensible Starlark という Python のサブセット⾔語で 拡張可能 WORKSPACE, BUILD(.bazel) といった ファイルを配置する
  8. How good is Bazel for Docker? Develop with Docker +

    Bazel
  9. How good is Bazel for Docker? Docker Image Optimization デフォルトで

    distoless を ベースイメージとし イメージサイズを ⾃動で最⼩化する ↓ テンプレート的な Dockerfile の数を 減らせる All in Bazel Build, Push, Pull に Docker を利⽤せず すべてが Bazel で 完結する
  10. How to use Bazel for Docker? The usage for Bazel

    + Docker
  11. bazelbuild/rules_docker HANDLE DOCKER Bazel ファイルに記述するだけで 利⽤可能 BUILD / PUSH /

    PULL Bazel だけで Docker Image の Build, Push, Pull が出来る SUPPORT LANGUAGES go_image, py_image など 各⾔語⽤の `lang_image` が⽤意されている https://github.com/bazelbuild/rules_docker
  12. Build with container_image

  13. Build with go_image

  14. Build with go_image

  15. Pull with container_pull

  16. Push with container_push

  17. RECAP DOCKER IMAGE OPTIMIZATION ⾃動で最適化し、最⼩イメージを 作ってくれる ALL IN BAZEL エコシステムが

    Bazel で完結する
  18. See Also https://bazel.build http://github.com/ bazelbuild/bazel https://github.com/ bazelbuild/rules_docker

  19. Twitter @micnncim Thank you! Presented by @micnncim GitHub @micnncim