Slide 1

Slide 1 text

日本仮想化技術株式会社 VirtualTech.jp 2023/11/8 R.2 イメージ作成に役⽴つ ツールのご紹介

Slide 2

Slide 2 text

日本仮想化技術株式会社 概要 • 社名:日本仮想化技術株式会社 • 英語名:VirtualTech Japan Inc. • 設立:2006年12月 • 資本金:3,000万円 • 本社:東京都渋谷区渋谷1-8-1 • 取締役:宮原 徹(代表取締役社長兼CEO)、伊藤 宏通(取締役CTO) • スタッフ:11名(うち、9名が仮想化技術専門エンジニアです) • URL:http://VirtualTech.jp/ • 仮想化技術に関する研究および開発 • 仮想化技術に関する各種調査 • 仮想化技術に関連したソフトウェアの開発 • 仮想化技術を導入したシステムの構築 • OpenStackやKubernetes、DevOpsシステムの導入支援・新規機能開発 2 ベンダーニュートラルな 独立系仮想化技術の エキスパート集団 会社概要

Slide 3

Slide 3 text

DevOpsサポートサービス DevOpsを始めたいチームのための支援サービス 開発プロジェクト • 開発環境 • GitHubリポジトリ • CI/CD • IaC (デプロイ環境) 運用チーム • 運用監視 • 脆弱性スキャン • インシデント管理 • IaC (共通インフラ) 運用をまるっとお任せしたい おまかせDevOps (かんたんDevOpsに加えて) DevOps環境の運用・改善 インフラコードの保守 発生したインシデントへの対応 DevOps人材を育成したい かんたんDevOps DevOpsの環境初期構築 インフラのコード化 DevOpsプロセスの実践手順書・支援 技術サポート 会社概要 ৄࡉɾ͓໰͍߹Θͤઌ https://virtualtech.jp/devops/

Slide 4

Slide 4 text

自己紹介 • 名前 遠山 洋平 • 出生地 宮城県 • 出身地 神奈川県川崎市 → 埼玉県 • 仕事 OpenStack, Kubernetes, コンテナー, PG-Strom etc... • 普段はGPUと速いストレージでSQLを爆速にする技術調査、導入支援 • 主にクラウド関連技術のオンプレ関連を担当 • 弊社ブログやたまに雑誌記事執筆 4

Slide 5

Slide 5 text

私が書いた4章の概要 • 「イメージチェックツールについて書いてください」というオー ダーでした • イメージ作成ツールについては他の章で取り上げているので、次 のようなものを取り上げることにしました 1. イメージの脆弱性スキャン 2. 最近話題のSBOM 3. Dockerfileの書き方のバリデートツール 5

Slide 6

Slide 6 text

これまでのおさらい 多いので、さらっと 6

Slide 7

Slide 7 text

コンテナーとイメージ • コンテナーはイメージベースでアプリを動かす • Docker • Kubernetes • 安定したアプリを実⾏するには適切なイメージ選定が重要 • ベースイメージに動かしたいアプリを組み込む→実行 7

Slide 8

Slide 8 text

コンテナーのベースイメージとは • コンテナーでアプリを動かすときに使うイメージ • ベースイメージは以下の組合せ 1. Linuxカーネル部分を除くOS部分 2. アプリケーション実⾏環境 • Python • Go • Rust • Node.js etc 8

Slide 9

Slide 9 text

ベースイメージ選定で注意すること 1. イメージの出どころ • 誰が作成しているか 2. イメージの新鮮さ • 定期的にどのようにアップデートされているか • ⼿動ビルド or ⾃動ビルド 3. イメージの内容 • 複雑ではないか • イメージサイズは適切か • ライセンスは問題ないか 9

Slide 10

Slide 10 text

アプリイメージの維持管理 • 作ったアプリイメージは定期的な更新が必要 • ベースイメージは定期的にバグと脆弱性のアップデートがある • アプリケーション側のアップデートでもイメージ更新が必要 • 定期的にメンテナンスする仕組みを検討しよう • イメージビルドの⾃動化 • 脆弱性チェックツール 10 Applications Bin/Libs OS ベース部分

Slide 11

Slide 11 text

マルチステージビルドとは • シングルバイナリーで動くアプリケーションはマルチステージビ ルドを採用すると良い • ビルド環境でバイナリービルド • ビルド成果物をコピー • 小さいイメージでアプリを実行 • 最小限の実行環境 • アプリのみ 11 busybox, alpine

Slide 12

Slide 12 text

そのほか覚えておくべきこと • 複数CPUアーキテクチャーを考慮したイメージ作成 • Multi-platform images • CPUアーキテクチャーフリーなイメージ作成 • WASM 12 ͪΐͬͱ୤ઢ...

Slide 13

Slide 13 text

SBOM(Software Bill of Materials) • 直訳するとソフトウェアの部品表 • アプリケーションを実行する環境を構成するライブラリ一覧を決 められた形式で出力したテキストファイル • 提出を求められた場合は指定された形式で作成 13 ϥΠϒϥϦͱόʔδϣϯɺ ࡞ऀɺϥΠηϯε

Slide 14

Slide 14 text

イメージ作成時に便利な Dockerの機能と拡張機能 14

Slide 15

Slide 15 text

Docker Scout • Docker Desktopの新しい機能 • イメージの脆弱性スキャン • 追加インストールの必要なく使える • ローカルイメージのスキャンは無料 • Docker DesktopではGUIとCLIが提供 15 Docker֦ுػೳ

Slide 16

Slide 16 text

Docker Scout GUI 16 Docker֦ுػೳ

Slide 17

Slide 17 text

Aqua Trivy 拡張 • OSSのスキャンツール「Trivy」のDocker拡張機能 • Docker Desktopの拡張機能として追加 • イメージのスキャン • SBOM作成 17 Docker֦ுػೳ

Slide 18

Slide 18 text

Aqua Trivy 外観 • 拡張ではGUIのみ • CLIは必要なら別途 18 Docker֦ுػೳ

Slide 19

Slide 19 text

Dive In 拡張 • イメージのレイヤーを視覚化 • イメージ共有する前にこのツールでチェックを推奨 • 但しContainerdイメージストアリング非対応 • 例えば • クラウドのクレデンシャル情報が含まれていないか • イメージに不要なログやアーカイブ、キャッシュが含まれていないか 19 Docker֦ுػೳ

Slide 20

Slide 20 text

Dive In 外観 20 Docker֦ுػೳ

Slide 21

Slide 21 text

Dockerfile作成に便利な VSCodeの拡張機能 21

Slide 22

Slide 22 text

Docker 拡張 • VSCodeから離れずにDockerの操作が可能 • 書いたDockerfileを使ったイメージ作成 • 書いたcompose.yamlを使ったコンテナ環境作成 • Dockerコンテナーの作成、停止、再起動 • Dockerfileやcompose.yaml編集時入力補完やヘルプ表示等 22 VSCode֦ுػೳ

Slide 23

Slide 23 text

Docker 拡張機能の機能紹介 • Dockerfileからイメージビルド 23 VSCode֦ுػೳ

Slide 24

Slide 24 text

Docker 拡張機能の機能紹介 • アプリをブラウザーで開く • シェルで開く • ログを表示 • コンテナの操作など 24 VSCode֦ுػೳ

Slide 25

Slide 25 text

Hadolint 拡張 • 「ヘドリント」と読むらしい(Youtubeの動画などから) • Dockerfileの構文チェックをリアルタイムに実行 • 修正提案もしてくれる • きれいなDockerfileの出来上がり 25 VSCode֦ுػೳ

Slide 26

Slide 26 text

Hadolint 拡張機能の機能紹介 • 適切ではない部分にマークを付けてくれる • リアルタイムで警告 26 VSCode֦ுػೳ

Slide 27

Slide 27 text

Hadolint 拡張機能の機能紹介 • 波線にカーソルを合わせると、問題の内容をポップアップ • リンククリックで詳細情報を確認 27 VSCode֦ுػೳ

Slide 28

Slide 28 text

チェック用CLIツールの 紹介 28

Slide 29

Slide 29 text

Docker Scout CLI • Docker Desktop標準のイメージチェックツール • ローカルイメージは無料でチェックできる • GUIとCLIがある • イメージスキャン • SBOM作成も可能 29 CLIπʔϧ঺հ

Slide 30

Slide 30 text

イメージスキャン • docker scout quickviewで確認 • docker scout cvesで詳細情報 30 CLIπʔϧ঺հ

Slide 31

Slide 31 text

SBOM作成 • 次のようなコマンドでSBOM作成が可能 31 CLIπʔϧ঺հ

Slide 32

Slide 32 text

Trivy CLI • OSSのスキャンツール • コンテナーイメージチェックの他に、次のスキャンも可能 • Dockerfile • Kubernetes マニフェスト(YAML) • Terraform • SBOM生成も可能 • 今後も色々機能追加されていく予定だとか 32 CLIπʔϧ঺հ

Slide 33

Slide 33 text

Trivy CLI 使用例 • イメージスキャン • IaCファイルのスキャン • Dockerfile • K8s YAML • Terraform • SBOM作成 33 CLIπʔϧ঺հ $ trivy image alpine:3.15 $ trivy config Dockerfile $ trivy config deployment.yaml $ trivy image --format spdx-json --output result.json alpine:3.15 $ ls result.json

Slide 34

Slide 34 text

Hadolint CLI • Dockerfileが構文に沿っているかチェックするツール • VSCodeのHadolint拡張を使う場合に必須 • 私はCLIよりVSCodeを介して使うほうが好き 34 CLIπʔϧ঺հ

Slide 35

Slide 35 text

Hadolint CLI 使用例 • 次のようなコマンドでDockerfileのチェックが可能 35 CLIπʔϧ঺հ

Slide 36

Slide 36 text

Dive CLI • VSCodeの拡張機能のところでも説明したとおり • CLIで使うとTUIでイメージ探索できる • 但し、Containerdイメージストアリング非対応 36 CLIπʔϧ঺հ

Slide 37

Slide 37 text

まとめ コンテナーを実運用する場合は、次を実践しましょう 1.ベースイメージはチェックしてから使おう 2.マニフェストはLintツールを使ってきれいに書こう 3.自作のコンテナーイメージは定期的な保守を心がけよう • イメージの定期メンテナンスは手間がかかる • DevOpsの考え方を適用して自動化 37

Slide 38

Slide 38 text

DevOpsサポートサービス DevOpsを始めたいチームのための支援サービス 開発プロジェクト • 開発環境 • GitHubリポジトリ • CI/CD • IaC (デプロイ環境) 運用チーム • 運用監視 • 脆弱性スキャン • インシデント管理 • IaC (共通インフラ) 運用をまるっとお任せしたい おまかせDevOps (かんたんDevOpsに加えて) DevOps環境の運用・改善 インフラコードの保守 発生したインシデントへの対応 DevOps人材を育成したい かんたんDevOps DevOpsの環境初期構築 インフラのコード化 DevOpsプロセスの実践手順書・支援 技術サポート 会社概要 ৄࡉɾ͓໰͍߹Θͤઌ https://virtualtech.jp/devops/

Slide 39

Slide 39 text

39