type
status
date
slug
summary
tags
category
icon
password

第1章 コンテナ技術の説明

目標

ソフトウェアがどのようにコンテナ内で実行され、Red Hat OpenShiftコンテナプラットフォームによってオーケストレーションされるかを説明する。

学習目標

  • Linuxコンテナのアーキテクチャについて説明できる。
  • Dockerを使ってコンテナがどのように実装されているかを説明できる。
  • Red Hat OpenShiftコンテナプラットフォーム上で動作するKubernetesクラスタのアーキテクチャについて説明できる。

セクション

  • コンテナアーキテクチャの説明(およびクイズ)
  • Dockerアーキテクチャの説明(およびクイズ)
  • KubernetesとOpenShiftアーキテクチャの説明(およびクイズ)

コンテナアーキテクチャの説明

学習目標

このセクションを終えた後、学生は以下のことを説明できるようになります:
  • Linuxコンテナのアーキテクチャ
  • ソフトウェアアプリケーションの特徴
  • コンテナを使用するアプローチ

コンテナ化されたアプリケーション

ソフトウェアアプリケーションは通常、ライブラリや設定ファイルのセットとしてランタイム環境にデプロイされます。従来、これらのアプリケーションは、データベースサーバーやHTTPサーバーなどのサービスが実行されているオペレーティングシステムにデプロイされます。しかし、仮想マシンや物理ホストなど、同様のサービスを提供できる環境にもデプロイできます。
従来のアプリケーションの問題点
従来のソフトウェアアプリケーションの最大の欠点は、ランタイム環境に密接に依存していることです。これにより、ベースOSに適用される更新プログラムやパッチがアプリケーションを壊す可能性があります。例えば、OSの更新には複数の依存関係が含まれており、これによりアプリケーションが互換性のない更新を受けることがあります。特に、オペレーティングシステムのライブラリ(複数のプログラミング言語で共有されるライブラリ)が更新されることで、実行中のアプリケーションに影響を与えることがあります。
さらに、別のアプリケーションが同じホストOSとライブラリを共有している場合(図1.1参照)、最初のアプリケーションのライブラリを修正する更新が2番目のアプリケーションに影響を与え、正常に動作しなくなるリスクがあります。
メンテナンスの課題
そのため、典型的なソフトウェアアプリケーションを開発する企業では、実行環境のメンテナンスを行う際に、OSの更新がアプリケーションに影響を与えないことを確認するための完全なテストが必要です。アプリケーションの複雑さによっては、回帰検証が容易ではなく、大規模なプロジェクトとして取り組む必要がある場合もあります。
また、通常、更新にはアプリケーションを完全に停止する必要があり、これは高可用性機能が有効になった環境での実行を意味します。このような環境では、ダウンタイムの影響を最小限に抑えることができますが、デプロイメントプロセスが複雑になります。
その結果、メンテナンス作業は煩雑になり、デプロイや更新のプロセスが複雑化することがあります。

notion image
 
図1.1


コンテナの利点と特徴

コンテナとは

システム管理者は、コンテナを使用して作業することもできます。コンテナは、単一のオペレーティングシステム内での隔離されたパーティションの一種です。コンテナは、仮想マシンと同様の利点(セキュリティ、ストレージ、ネットワークの隔離)を提供しつつ、ハードウェアリソースが少なく、起動や終了が迅速です。また、アプリケーションが使用するライブラリやランタイム環境(CPUやストレージなど)を隔離することで、ホストOSへのOS更新の影響を最小限に抑えます(図1.1参照)。
コンテナの使用は、ホストアプリケーションの効率性、弾力性、再利用性だけでなく、プラットフォームやアプリケーションの移植性にも貢献します。コンテナプロバイダーには、Rocket、Drawbridge、LXCなどがあり、その中でも主要なプロバイダーの1つがDockerです。

コンテナの主な利点

以下はコンテナの主な利点です:
  1. 低ハードウェア負荷
    1. コンテナは、OSの内部機能を使用して隔離された環境を作成し、リソースは名前空間(namespaces)やcgroupsなどのOSの機能で管理されます。このアプローチにより、仮想マシンのハイパーバイザーと比較して、CPUやメモリのオーバーヘッドが最小限に抑えられます。仮想マシンでアプリケーションを実行すると、同じ低いハードウェア負荷の隔離を提供するために、多くのサービスのレイヤーが必要となります。
  1. 環境の隔離
    1. コンテナは、ホストOSや他のアプリケーションの変更がコンテナに影響を与えない閉じた環境で動作します。コンテナに必要なライブラリは自己完結しており、アプリケーションは中断なく実行できます。例えば、各アプリケーションは独自のライブラリセットを持つコンテナで実行され、あるコンテナの更新が他のコンテナに影響を与えることはありません。
  1. 迅速なデプロイ
    1. コンテナは、基盤となるオペレーティングシステム全体をインストールする必要がないため、迅速にデプロイできます。通常、隔離をサポートするためには物理ホストや仮想マシンに新しいOSのインストールが必要であり、簡単な更新でもOSの再起動が必要になる場合があります。コンテナは、ホストOSのサービスを停止することなく再起動するだけで済みます。
  1. 複数環境でのデプロイ
    1. 従来のデプロイメントシナリオでは、単一のホスト上で環境の違いがアプリケーションを壊す可能性があります。しかし、コンテナを使用すると、同じコンテナイメージを使用するため、環境の違いや非互換性が軽減されます。
  1. 再利用性
    1. 同じコンテナを複数のアプリケーションで再利用できます。フルOSをセットアップすることなく、データベースコンテナはソフトウェアアプリケーション用にテーブルを作成し、その後、簡単に破棄して再作成することができます。また、同じデータベースコンテナは、プロダクション環境でアプリケーションをデプロイするためにも使用できます。

注意点と課題

通常、ソフトウェアアプリケーションとその依存するサービス(データベース、メッセージング、ファイルシステムなど)は、単一のコンテナで実行されることが多いです。しかし、コンテナの特性や機敏性の要件により、このアプローチは難しい場合や推奨されないことがあります。この場合、マルチコンテナデプロイメントの方が適している場合があります。
さらに、コンテナ環境では一部のアプリケーションアクションが適さないことがあります。例えば、メモリ、ファイルシステム、デバイスなどの低レベルのハードウェア情報にアクセスするアプリケーションは、コンテナの制約により失敗することがあります。

マイクロサービス開発の推進

最後に、コンテナはマイクロサービス開発アプローチを推進します。コンテナは、複雑なマルチマシン環境なしで、開発環境や本番環境にデプロイできるサービスを作成・実行するための軽量で信頼性のある環境を提供します。

質問 1
以下のうち、コンテナ内で実行される可能性のあるソフトウェアアプリケーションの例として、該当するものはどれですか?(2つ選んでください)
(A) MySQLデータベース、FTPサーバー、Webサーバーなどのサービスを利用するデータベース駆動型Pythonアプリケーション(単一の物理ホスト上で実行されている)
(B) Java Enterprise Editionアプリケーション、Oracleデータベース、メッセージブローカー(単一のVM上で実行されている)
(C) トラフィックとブロックデータ転送を分析するI/Oモニタリングツール
(D) CPUキャッシュのすべてのメモリのスナップショットを取得するメモリダンプアプリケーションツール(デバッグ用)
解説
コンテナは、アプリケーションとその依存関係を一緒にパッケージ化し、独立して実行できる環境を提供します。
(A) のPythonアプリケーションは、複数のサービス(MySQL、FTPサーバー、Webサーバー)と通信することが多く、コンテナの特性を活かして構成できます。
(B) のJava Enterprise Editionアプリケーションもコンテナで分離して実行可能で、異なる環境や依存関係がある場合に適しています。
(C) は主に監視ツールで、特定の環境でのみ必要になるため、汎用的なコンテナ化の用途としては適さない場合があります。
(D) のメモリダンプツールはデバッグ用途が主で、一般的なコンテナ化にはあまり適していません。
正解:A、B

質問 2
次のユースケースのうち、コンテナに最適なものはどれですか?(2つ選んでください)
(A) ソフトウェアプロバイダーが他の企業に再利用可能なソフトウェアを迅速かつエラーなく配布する必要がある。
(B) 物理ホスト上でアプリケーションを展開している企業が、パフォーマンス向上のためにコンテナを使用したいと考えている。
(C) データセンターがデータベースアプリケーション用に共有ホスティングの代替案を探しており、ハードウェア処理の量を最小化したい。
(D) 金融会社がCPU集約型のリスク分析ツールを独自のコンテナで実装し、必要なプロセッサ数を最小限に抑えたいと考えている。
解説
コンテナは、同じソフトウェアがどこでも一貫して動作する環境を提供するため、再利用可能なソフトウェアの迅速な配布に適しています(A)。また、コンテナはリソース効率が高く、ハードウェアへの依存を最小限に抑えるため、共有ホスティングの代替案としても有効です(C)。
(B) の物理ホストのパフォーマンス改善については、コンテナによる直接的なパフォーマンス向上は期待できない場合があります。
(D) のCPU集約型アプリケーションは、コンテナよりも高性能な物理リソースが求められることが多いため、必ずしもコンテナに適しているとは限りません。
正解:A、C

質問 3
ある企業が、同じホストで実行されているPHPとPythonのアプリケーションを新しいアーキテクチャに移行しています。内部ポリシーにより、両方のアプリケーションはOSから提供されるカスタム共有ライブラリを使用していますが、Python開発チームのリクエストにより適用された最新の更新がPHPアプリケーションを壊してしまいました。どのアーキテクチャが両方のアプリケーションに最適なサポートを提供しますか?(2つ選んでください)
(A) 各アプリケーションを異なるVMにデプロイし、カスタム共有ライブラリを個別に各VMホストに適用する。
(B) 各アプリケーションを異なるコンテナにデプロイし、カスタム共有ライブラリを個別に各コンテナに適用する。
(C) 各アプリケーションを異なるVMにデプロイし、カスタム共有ライブラリを全てのVMホストに適用する。
(D) 各アプリケーションを異なるコンテナにデプロイし、カスタム共有ライブラリを全てのコンテナに適用する。
解説
PHPとPythonのアプリケーションを異なる環境で実行することで、互いの依存関係や更新による影響を受けないようにする必要があります。
(A) の異なるVMへのデプロイでは、ライブラリや設定の衝突を防ぎやすくなります。
(B) のコンテナを使った分離も、各アプリケーションの環境を柔軟に管理できるため、同様に適しています。
(C) はVM全体に同じライブラリを適用する方法であり、ライブラリの更新が他のアプリケーションに影響を及ぼす可能性が高くなります。
(D) はすべてのコンテナに同じライブラリを適用するため、依存関係の問題を解決できません。
正解:A、B

質問 4
即時消費のためにコンテナとしてパッケージ化できるアプリケーションの種類はどれですか?(3つ選んでください)
(A) 仮想マシンハイパーバイザー
(B) ブログソフトウェア(例:WordPress)
(C) データベース
(D) ローカルファイルシステムリカバリツール
(E) Webサーバー
解説
コンテナは、アプリケーションの迅速なデプロイやスケーリングが求められる場合に適しています。
(B) のWordPressは、Webアプリケーションとしてコンテナ化されることが多く、簡単にデプロイできます。
(C) のデータベースも、コンテナとして提供されることが多く、特に開発やテスト環境での使用に適しています。
(E) のWebサーバーは、コンテナの代表的なユースケースで、迅速に展開やスケーリングが可能です。
(A) の仮想マシンハイパーバイザーは、仮想化の基盤となるコンポーネントで、コンテナとして実行することは一般的ではありません。
(D) のローカルファイルシステムリカバリツールは、特定の環境やリソースへのアクセスが必要になるため、コンテナでの利用には適さない場合があります。
正解:B、C、E
 
相关文章
RedHat EX200 本番近い試験問題集
Lazy loaded image
RedHat EX200 本番試験問題集(有料版)
Lazy loaded image
18-Red Hat DO285 第5章:カスタムコンテナイメージの作成-1:コンテナイメージの管理ラボ
Lazy loaded image
17-Red Hat DO285 第4章:コンテナイメージの管理-4:コンテナイメージの管理ラボ
Lazy loaded image
16-Red Hat DO285 第4章:コンテナイメージの管理-3:ガイド付き演習
Lazy loaded image
15-Red Hat DO285 第4章:コンテナイメージの管理-2:コンテナイメージの操作
Lazy loaded image
03-Red Hat DO285 第2章:コンテナ技術の説明-2:Dockerアーキテクチャの説明 01-Red Hat DO285 第1章:课程简介
Loading...
みなみ
みなみ
一个普通的干饭人🍚
最新发布
02-生成AIパスポート試験対策:第2章「生成AI」
2025-2-1
01-生成AIパスポート試験対策:第1章「人口知能」
2025-2-1
究極のAWS認定 AI 実践者 AIF-C01 - 学習メモ
2025-1-27
不要再傻傻的直接买NISA啦
2025-1-27
Kubernetes、仮想マシンとコンテナの概念を超簡単に解説!
2025-1-24
529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
2025-1-22
公告
🎉欢迎访问我的博客🎉
- 感谢您的支持 --
本站点于2024/09/01建立
👏主要分享IT相关主题👏
系统管理:
Redhat…
容器和编排:
Kubernetes、Openshift…
云计算:
AWS、IBM…
AI入门
以及技术笔记和考证经验
定期更新,欢迎互动。
感谢访问!
快速浏览相关标签