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

Software Design 11月号第1特集「理想のコンテナイメージを作る」を振り返る 第3章

Software Design 11月号第1特集「理想のコンテナイメージを作る」を振り返る 第3章

Software Design 11月号の第1特集「理想のコンテナイメージを作る Dockerfileのベストプラクティス」の全5章のうち3章を弊社のエンジニアが担当しました。今回は各担当者による担当部分の解説セッションと、それをベースに参加者のみなさんからのご質問やご意見をいただきながらディスカッションを行いたいと思います。
「理想のコンテナイメージとはどのようなものなのか」はそれぞれの立場や関心事によって変わって来るかと思います。今回の勉強会では理想像を見つけるのではなく、多面的に理想的なコンテナイメージとはどのようなものかを考えられる視点を学んでいただけます。

とことんDevOps

November 08, 2023
Tweet

More Decks by とことんDevOps

Other Decks in Technology

Transcript

  1. Part3 ベースイメージの選び方
    1

    View full-size slide

  2. ベースイメージとは
    • Dockerのコンテナイメージは、イメージレイヤーの集合体。
    • 変更内容をレイヤーという単位で管理。
    • ミルフィーユのように、レイヤーを重ね合わせたものが最終的なイメージ。
    • どのようなイメージも、土台となるイメージを出発点としている。
    • これをベースイメージと呼ぶ。
    • ビルドしたイメージ = ベースイメージに独自の変更レイヤーを重ねたもの。
    2

    View full-size slide

  3. ベースイメージとは
    3
    FROM ubuntu:22.04 ← ubuntu:22.04のイメージをベースにする
    RUN apt update ← apt updateを実行
    RUN apt instal -y hello ← apt install –y helloを実行
    COPY example.txt /work/ ← example.txtを/workディレクトリへコピー
    Dockerfileの例
    Ubuntu:22.04
    apt update
    apt install –y hello
    COPY example.txt
    ビルド
    ベースイメージ
    独自の変更レイヤー
    ビルドされたイメージ
    ビルドの出発点として、ここに何を選択するかが問題

    View full-size slide

  4. 信頼できるイメージを使う
    • 公開されているコンテナであれば、どのようなものでもベースにできる。
    • DockerHubなどの公開レジストリからイメージを取得するのが基本。
    • だがDockerHubは、誰でも自由にイメージをアップロードできる。
    • ただし、そのイメージは本当に使っても大丈夫なの?
    • メンテナンスされてる?
    • セキュリティ対策は?
    • マルウェアが仕込まれてたりしない?
    • どこの誰が作ったかもわからないイメージを使うのは危険。
    • マルウェアのインストールを隠蔽した、罠イメージを作ることも可能。
    • 信頼できるイメージを厳選して使おう。
    4

    View full-size slide

  5. 信頼できるイメージとは
    • ベースイメージの中身を精査できれば理想だが、そんなコストは払えない。
    • つまり究極的には、信頼できる人が作ったイメージかどうかで判断。
    • じゃあ信頼できる人って誰?
    • DockerHubのTrusted Contentなら安心。
    • Docker Official Image
    • Verified Publisher
    • Sponsored OSS
    • ここにリストされているイメージを出発点にすることをまず検討しよう。
    • UbuntuやAlpineといったOS
    • MySQLやPostgreSQLなどのミドルウェア
    • GoやPythonといった言語などのオフィシャルなイメージが存在する
    • 用途に合わせてこれらの中から選ぼう
    5

    View full-size slide

  6. イメージのサイズを意識する
    • 効率的な実運用のためには、イメージのサイズも重要。
    • Ubuntuなどの汎用イメージをベースに独自カスタマイズをするより、
    用途に合わせたベースを選択する方がいい。
    • Alpineのような、軽量をウリにしているOSを検討してもいい。
    • ただしglibcがmuslになってるなど、仕様の違いには注意。
    • 軽量なアプリ実行環境が欲しいなら、distrolessを検討してみよう。
    6

    View full-size slide

  7. イメージを自作する
    • ありもののイメージがどうしてもダメであれば、ゼロから自作もアリ。
    • ただしメンテナンスコストをすべて自分で負担する必要がある。
    • Ubuntuであれば、debootstrapを使ってユーザーランドを自作して、コ
    ンテナとしてインポートすることが可能。
    • 運用コスト削減のためには、独自カスタマイズは最小限にするのが鉄則。
    • あくまで最後の手段と心得よう。
    7

    View full-size slide

  8. まとめ
    • セキュリティを意識して、信頼できる人の作ったイメージのみを使おう。
    • よくわからない野良イメージの拾い食いダメ絶対。
    • イメージのサイズに気を配ろう。
    • ベースOSを変えたり、不要なツールやライブラリのないイメージを使うなど。
    • 自作も不可能ではない。
    • ただしあまりオススメはしない。
    8

    View full-size slide