type
status
date
slug
summary
tags
category
icon
password

Dockerアーキテクチャ概要

Dockerは、コンテナ化されたアプリケーションを管理・デプロイするためのプラットフォームで、クライアント・サーバー型のアーキテクチャを採用しています。以下に、Dockerの主な構成要素と機能について説明します。

Dockerアーキテクチャの構成要素

  1. クライアント
      • Dockerクライアントは主にコマンドラインインターフェース(CLI)ツールであるdockerであり、ユーザーがコマンドを発行してDockerと対話します。
      • サーバーとRESTful APIを介して通信し、操作リクエストを送信します。
  1. サーバー(デーモン)
      • DockerサーバーはデーモンとしてOS上で動作し、コンテナイメージの作成、実行、ダウンロードといった主要な作業を担当します。
      • デーモンはクライアントと同じシステム上またはリモートで実行できます。
  1. Dockerのコア要素
      • イメージ:コンテナを作成するための読み取り専用のテンプレートで、ランタイム環境やアプリケーションが含まれています。
      • レジストリ:イメージを保存する場所で、パブリック(例:Docker Hub)やプライベートで運用できます。
      • コンテナ:ホストOS上でアプリケーションを分離して実行するユーザースペース環境です。

DockerにおけるLinuxカーネルの役割

  1. 名前空間(Namespaces)
      • 特定のシステムリソース(ネットワークインターフェースやプロセスIDなど)を分離し、他のプロセスから見えないようにします。各コンテナは専用の名前空間で動作し、リソースの隔離が実現されます。
  1. コントロールグループ(cgroups)
      • 各コンテナが使用できるシステムリソース(CPUやメモリなど)を制限するための仕組みです。これにより、あるコンテナがホストのリソースを過剰に使用することを防ぎます。
  1. SELinux
      • セキュリティ強化Linux(SELinux)は、ホストシステムとコンテナの相互の保護を提供します。各コンテナのプロセスは、SELinuxの制約により他のコンテナやホストに対するアクセスが制限されます。

Dockerコンテナイメージ

  • Dockerのイメージは、複数のレイヤーで構成されています。各レイヤーは変更不可であり、新しいレイヤーが既存のレイヤーの上に追加される仕組みです。
  • これにより、コンテナに一貫したファイルシステムを提供し、UnionFSファイルシステムを使用してレイヤーの統合ビューを作成します。

Dockerイメージ作成方法

Dockerでは、コンテナイメージを作成するために2つの主要なアプローチがあります:
  1. 実行中のコンテナを使用する方法
      • 不変(immutable)のイメージを基に新しいコンテナインスタンスを起動し、そのコンテナ内で必要な変更や更新を実施します。これらの変更は、読み書き可能な追加レイヤーとして保存されます。
      • この追加レイヤーを既存のイメージに保存することで、新しいイメージを生成できます。
      • シンプルで簡単な方法ですが、一時ファイルやログなど不要なファイルが含まれ、イメージサイズが大きくなる可能性があるため、推奨されないアプローチです。
  1. Dockerfileを使用する方法
      • ベースイメージを基に、一連の「命令(instructions)」を記述したDockerfileから新しいイメージを作成します。
      • 各命令はイメージ上に新しいレイヤーを作成し、最終的なコンテナイメージが構築されます。
      • この方法は、各レイヤーにどのファイルを追加するかを制御できるため、イメージ作成の推奨アプローチです。

参考資料

Dockerfileを使用することで、効率的で無駄のないイメージが作成でき、コンテナ管理がより容易になります。

このように、Dockerはコンテナの隔離と効率的な管理を実現するために、クライアント・サーバー型のアーキテクチャとLinuxの機能を活用しています。
 

問題と解説(Dockerアーキテクチャについて)

質問1
以下のタスクのうち、Dockerクライアント以外のコンポーネントによって管理されるものはどれですか?(3つ選んでください)
a. レジストリからのコンテナイメージファイルのダウンロード
b. サーバーからのコンテナイメージのデプロイ要求
c. レジストリからのイメージ検索
d. コンテナイメージのビルド
解説
Dockerはクライアント・サーバーアーキテクチャを採用しています。dockerコマンドを使用して、クライアントがサーバー(デーモン)と通信し、RESTful APIを介して操作を要求します。クライアント以外で管理されるタスクには、a. ダウンロード、c. イメージ検索、d. ビルドが含まれます。これらの処理はDockerデーモンまたはレジストリによって管理され、クライアントが直接実行するものではありません。
正解:a、c、d

質問2
以下の選択肢のうち、コンテナイメージを最も適切に説明しているものはどれですか?
a. コンテナが作成される仮想マシンイメージ
b. コンテナが作成されるブループリント
c. アプリケーションが実行されるランタイム環境
d. レジストリで使用されるコンテナのインデックスファイル
解説
コンテナイメージは、アプリケーションのランタイム環境を構築するための「テンプレート」として使用されるブループリントです。イメージは変更できないため、一貫した環境を提供します。このため、正しい回答はb. ブループリントとなります。
正解:b

質問3
Dockerがコンテナのランタイム環境を作成および管理するために使用するカーネルコンポーネントはどれですか?(2つ選んでください)
a. ネームスペース
b. iSCSI
c. コントロールグループ(cgroups)
d. LVM
e. NUMAサポート
解説
Dockerは、Linuxカーネルの機能であるネームスペースとコントロールグループ(cgroups)を活用してコンテナを隔離し、リソースの制限と管理を行います。ネームスペースにより、ネットワークやファイルシステムなどのリソースを独立した環境として表示し、コントロールグループはコンテナが使用するリソースの制限を設定します。
正解:a、c

質問4
開発者のマシンでWordPressブログの既存イメージを更新し、新しい自作の拡張機能を追加しました。これらの更新内容を反映した新しいイメージを作成するための最適な方法はどれですか?(1つ選んでください)
a. 開発者のカスタムWordPressに行った更新を、プロダクションのWordPressにコピーし、イメージ内でパッチを適用する。
b. 開発者のカスタムWordPressに行った更新をDockerfileを使用して新しいイメージに組み込み、コンテナイメージを再構築する。
c. プロダクションと開発者のWordPressイメージの差分を実行し、すべてのバイナリ差分をプロダクションイメージに適用する。
d. 更新されたファイルを開発者のイメージからプロダクション環境の/tmpディレクトリにコピーし、イメージの更新を要求する。
解説
最適な方法はDockerfileを使用して新しいイメージを構築する方法です。Dockerfileによって一貫性を保ちながら更新を反映でき、変更内容が明確に記録されます。直接変更を反映する方法(a.やd.)では、一貫性が損なわれる恐れがあるため、推奨されません。
正解:b
相关文章
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
04-Red Hat DO285 第2章:コンテナ技術の説明-3:KubernetesとOpenShiftアーキテクチャの説明02-Red Hat DO285 第2章:コンテナ技術の説明-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入门
以及技术笔记和考证经验
定期更新,欢迎互动。
感谢访问!
快速浏览相关标签