linux docker

定義: ドッカー

Docker は、コンテナベースの実装に関しては事実上の標準となっています。小規模な実装から大規模なエンタープライズ アプリケーションまで、Docker はコンテナベースのオーケストレーションの基盤として機能します。

Docker は、移植性を考慮して開発され、最新のマイクロサービス アーキテクチャ向けに設計された方法により、短期間で DevOps コミュニティでこれほどの人気と採用を獲得しました。

コンテナの進化

コンテナ化が新しいテクノロジーだと思っているなら、そうではありません。 Google は独自のコンテナ化テクノロジーを使用しています インフラストラクチャで長年にわたって使用されてきました。

実際、コンテナの概念は 2000 年代に始まり、そのルーツは 1979 年に遡り、プロセスのルート ディレクトリを変更する概念です。

以下は、2000 年に開始されたコンテナベースのプロジェクトのリストです。

Linux コンテナ (LXC) とは何ですか?

Docker の概念に直接入る前に、まず Linux コンテナとは何かを理解する必要があります。

一般的な仮想化環境では、Xen、Hyper-V などのハイパーバイザーを使用して、1 つ以上の仮想マシンが物理サーバー上で実行されます。

一方、コンテナはオペレーティング システムのカーネル上で実行されます。 これをオペレーティング システム レベルの仮想化と呼ぶことができます。。コンテナーの基礎となる概念に入る前に、Linux の 2 つの主要な概念を理解する必要があります。

  • ユーザーエリア : ユーザープログラム(アプリケーション、プロセス)の実行に必要なすべてのコードを「ユーザー空間」と呼びます。ファイルを作成するなどのプログラム アクションを開始すると、ユーザー空間のプロセスがカーネル空間へのシステム コールを行います。
  • カーネルスペース : これはオペレーティング システムの中心であり、カーネル コードが配置されています。

コンテナはプロセスです

Nginx Web サーバーなどのアプリケーションを起動すると、実際にはプロセスが起動されます。プロセス自体は、分離が限定された自己完結型の命令です。

実行して機能するために必要なファイルと構成のみを含むプロセスを分離できたらどうでしょうか。それがコンテナの役割です。

コンテナは実際には十分な断熱性を備えたプロセスです ユーザー空間コンポーネント まるで別のオペレーティング システムのように感じられるように

親コンテナプロセスは子プロセスを持つことができます。したがって、コンテナはプロセスのグループでもあると言えます。

たとえば、Nginx サービスを起動すると、親 Nginx プロセスが起動します。次に、親プロセスは、キャッシュ マネージャー、キャッシュ ローダー、ワーカーなどの子プロセスをカバーします。

したがって、Nginx コンテナを起動すると、分離された環境でマスター Nginx プロセスが起動されます。これについては、以下のセクションで実際に説明します。

各コンテナには独立したユーザースペースがあります、単一のホスト上で複数のコンテナを実行できます。これは、1 つのコンテナが OS 全体を所有することを意味しますか?いいえ。独自のカーネルを持つ VM とは異なり、コンテナーには特定のディストリビューションに関連する必要なファイルのみが含まれており、共有ホストのカーネルを使用します。さらに興味深いのは、 同じカーネル空間を共有する単一ホスト上で、Linux ディストリビューションに基づく異なるコンテナを実行できます。

たとえば、RHEL、CentOS、SUSE ベースのコンテナを Ubuntu サーバー上で実行できます。これが可能なのは、すべての Linux ディストリビューションでユーザー空間のみが異なり、カーネル空間が同じであるためです。

Linux コンテナの基礎となる概念

次の図は、Linux continua を視覚的に表したものです。

コンテナーは、ネームスペースと cgroup と呼ばれる Linux カーネルの 2 つの機能を使用してホスト内で分離されます。

現実世界に例えるなら、アパートの建物です。一つの大きな建物ではありますが、各アパートは水道、ガス、電気のメーターが設置されており、それぞれの世帯が独自のアイデンティティを持って隔離されています。この断熱を確立するために、コンクリート、鉄骨構造、その他の建築材料を使用します。他の家への立ち入りを許可しない限り、他の家を見ることはできません。

同様に、複数のコンテナを含む単一のホストにリンクできます。独自の CPU、メモリ、IP アドレス、マウント ポイント、プロセスを持つコンテナーを分離するには、名前空間と cgroup と呼ばれる 2 つの Linux カーネル機能が必要です。

ドッカーとは一体何でしょうか?

Docker はオープンソース プロジェクトです Go で書かれ、Dotcloud (PaaS 会社) によって開発された人気のあるものです。

これは本質的に、名前空間や cgroup などの Linux カーネル機能を使用してオペレーティング システム上にコンテナを作成するコンテナ エンジンです。

つまり、LXC セクションで学んだすべてのコンテナーの概念と機能は、Docker によって非常に簡単に実行されます。いくつかの Docker コマンドと設定を実行するだけで、コンテナーを起動して実行できます。

すべての概念と実装は似ているため、Docker が Linux コンテナー (LXC) とどう違うのか疑問に思われるかもしれません。

Docker はもともと Linux コンテナ上に構築されました (LXC)。その後、Docker は LXC を独自のランタイム コンテナー (現在は runc の一部) に置き換えました。

コンテナ技術であるだけでなく、 Docker には、アプリケーションのパッケージ化を容易にする、明確に定義されたパッケージング コンポーネントがあります。。 Docker が登場する前は、コンテナーを管理するのは簡単ではありませんでした。言い換えれば、すべてのアプリケーション システム要件をコンテナーにパッケージ化することで、アプリケーションをインフラストラクチャから切り離すために必要なすべての作業を実行します。

たとえば、Java jar ファイルがある場合は、Java がインストールされている任意のサーバーでそれを実行できます。同じやり方で、 Docker を使用して必要なアプリケーションを含むコンテナーをパッケージ化すると、他のホスト上でコンテナーを実行できます。 Docker がインストールされている場所。

ドッカーとコンテナの違い

Docker は、コンテナの実装を効率的に管理するために開発されたテクノロジーまたはツールです。

では、Docker なしでコンテナを管理できますか?はい !もちろん。 LXC テクノロジーを使用して、Linux サーバー上でコンテナーを実行できます。

Docker について知っておくべきことすべて

Docker は、広く使用されているコンテナ化プラットフォームです。コンテナーとマイクロサービスは、アプリケーションの開発とデプロイメントの観点からよく使用されることを知っておく必要があります。これが「クラウドネイティブ」開発です。したがって、Docker はビジネスで非常に人気のある代替手段です。にアクセスしたい場合は、 Docker の完全ガイドから、パートナーの datascientest.com の Web サイトにアクセスできます。コンテナは軽量の実行環境であり、仮想マシンによる従来の仮想化技術に代わるものです。

最新のソフトウェアの開発を成功させるには、同じホストにデプロイされたアプリケーションを分離して、干渉を防ぐ必要があります。アプリケーションを実行するにはパッケージが必要です。仮想マシンは、同一システム上でアプリケーションを相互に分離し、ソフトウェア コンポーネント間の競合やリソースの競合を減らすために使用されます。 Docker は、オープンソースで安全かつコスト効率の高いソリューションです。 Docker は、Linux 仮想化レイヤーを通じて Windows または Mac 上でコンテナーを実行するためにも使用されます。これで、Docker に関する詳細情報を入手し、このコンテナ化プラットフォームの詳細を理解するにはどこに行けばよいかがわかりました。

最新のソフトウェアの開発を成功させるには、同じホストにデプロイされたアプリケーションを分離して、干渉を防ぐ必要があります。アプリケーションを実行するにはパッケージが必要です。仮想マシンは、同一システム上でアプリケーションを相互に分離し、ソフトウェア コンポーネント間の競合やリソースの競合を減らすために使用されます。 Docker は、オープンソースで安全かつコスト効率の高いソリューションです。 Docker は、Linux 仮想化レイヤーを通じて Windows または Mac 上でコンテナーを実行するためにも使用されます。これで、Docker に関する詳細情報を入手し、このコンテナ化プラットフォームの詳細を理解するにはどこに行けばよいかがわかりました。

Docker はなぜこれほど成功しているのでしょうか?

Docker には、アプリケーションを開発者のラップトップからテスト環境、そして運用環境に移動するための効率的なワークフローがあります。アプリケーションを Docker イメージにパッケージ化する実際の例を見て、さらに詳しく学びます。

Docker コンテナの起動にかかる時間は 1 秒もかからないことをご存知ですか?

信じられないほど高速で、互換性のある Linux カーネルを備えた任意のホスト上で実行できます。 (Windowsにも対応しています)

注記 : Windows に対する Linux カーネルのサポートがないため、Linux ホスト上で Windows コンテナを実行することはできません。。ここから Windows コンテナーについて読むことができます

Docker はイメージの保存に「コピーオンライト」ユニオン ファイル システムを使用します。コンテナーに変更が加えられると、その変更のみがコピーオンライト モデルを使用してディスクに書き込まれます。

A lire également  プラグマティック: 定義

コピーオンライト モデルを使用すると、すべてのコンテナに対して最適化された共有ストレージ レイヤーが得られます。