Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Build Docker Images with Bazel

micnncim
September 05, 2019

Build Docker Images with Bazel

micnncim

September 05, 2019
Tweet

More Decks by micnncim

Other Decks in Programming

Transcript

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

    View full-size slide

  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

    View full-size slide

  3. micnncim
    Twitter: @micnncim
    GitHub: @micnncim
    University Student / B4
    Interest: Go, Cloud Native, DevOps
    Favorite Base Image: distroless
    Blog: micnncim.github.io

    View full-size slide

  4. Let's Build
    Docker Images
    EXPLORE THE WAYS TO
    BUILD DOCKER IMAGES

    View full-size slide

  5. How to build
    Docker Image?
    `docker image build`
    これまで Docker Image
    をビルドすると
    いえば、これ
    BuildKit, kaniko, Buildah, ...
    "
    次世代 Docker
    ビルドツール"

    たくさんある
    特に BuildKit
    の勢いがある
    Bazel
    今⽇紹介するのはこれ

    View full-size slide

  6. 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)
    といった
    ファイルを配置する

    View full-size slide

  7. How good is
    Bazel
    for Docker?
    Develop with Docker + Bazel

    View full-size slide

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

    ベースイメージとし
    イメージサイズを
    ⾃動で最⼩化する

    テンプレート的な
    Dockerfile
    の数を
    減らせる
    All in Bazel
    Build, Push, Pull

    Docker
    を利⽤せず
    すべてが Bazel

    完結する

    View full-size slide

  9. How to use
    Bazel for Docker?
    The usage for Bazel + Docker

    View full-size slide

  10. 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

    View full-size slide

  11. Build with container_image

    View full-size slide

  12. Build with go_image

    View full-size slide

  13. Build with go_image

    View full-size slide

  14. Pull with container_pull

    View full-size slide

  15. Push with container_push

    View full-size slide

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

    View full-size slide

  17. See Also https://bazel.build
    http://github.com/
    bazelbuild/bazel
    https://github.com/
    bazelbuild/rules_docker

    View full-size slide

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

    View full-size slide