Software Design 11月号第1特集「理想のコンテナイメージを作る」を振り返る 第4章
by
とことんDevOps
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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