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
02-第2章:コンテナ技術の説明-1:コンテナアーキテクチャの説明04- 第2章:コンテナ技術の説明-3:KubernetesとOpenShiftアーキテクチャの説明
Loading...
minami
minami
一个普通的干饭人🍚
Announcement

🎉 ブログへようこそ 🎉

notion image
名前:みなみ独立事務所
性別:男
国籍:China
完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

📚 主な内容

💻 IT・システム開発
🏠 不動産 × 宅建士
🎓 MBA 学習記録

🔍 コンテンツの探し方

現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
気になるテーマを探す際は、タグ検索の利用をおすすめします。