Software Design 11月号第1特集「理想のコンテナイメージを作る」を振り返る 第4章
by
とことんDevOps
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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