DUICUO

Docker の基礎: Docker とは何ですか? なぜこれほど人気が​​あるのですか?

I. Docker とは何ですか?

Dockerは、Go言語で開発され、Apache 2.0ライセンスの下でライセンスされているオープンソースのアプリケーションコンテナエンジンです。Dockerを使用すると、開発者はアプリケーションと依存関係をポータブルなコンテナにパッケージ化し、任意のLinuxマシンにデプロイして実行できます。Dockerの核となる考え方は、パッケージングとボックス化であり、各ボックスは互いに分離され、独立しています。

II. Dockerの歴史

2010年、若いITプロフェッショナルのグループが米国サンフランシスコでdotCloudという会社を設立しました。dotCloudはPaaS(Platform-as-a-Service)プロバイダーです。dotCloudプラットフォームは、LinuxのLXCコンテナ技術を中核に採用しています。

LXCとは?LXCはDockerの基盤ですが、Dockerバージョン0.9ではGo言語をベースにしたLibcontainer実行ドライバが導入されました。Libcontainerプロジェクトの導入により、Dockerは名前空間、コントロールグループ、ケイパビリティ、AppArmorプロファイル、ネットワークインターフェースの処理にLinuxコンポーネント(LXC、libvirt、systemd-nspawnなど)に依存する必要がなくなりました。LXCは徐々にオプション化されました。

その後、これらのコンテナの作成と管理を容易にするために、dotCloudはGoogleのGoプログラミング言語をベースにした社内ツールキットを開発しました。これは後にDockerと名付けられました。こうしてDockerが誕生しました。LXCはDockerバージョン1.8で非推奨となり、バージョン1.10ではDockerから完全に削除されました。Dockerの公式LibcontainerはLinuxカーネルの多くの機能を統合しており、Linuxの制約を受けない独立した安定したライブラリとなっています。

2013年3月、dotCloudの創設者の一人であるソロモン・ハイクス氏は、Dockerプロジェクトのオープンソース化を正式に決定しました。同月、Dockerバージョン0.1がリリースされました。その後、Dockerは毎月、反復バージョンをリリースしました。そして2014年6月9日、Dockerバージョン1.0が正式にリリースされました。

当時、Dockerは業界で最も人気のあるオープンソース技術となっていました。Google、Microsoft、Amazon、VMwareといったインターネットの巨人たちは皆、Dockerを支持し、全面的な支援を表明しました。Dockerが普及した後、dotCloudは社名をDocker Inc.に変更しました。

III. Dockerを選ぶ理由

3.1 システムリソースのより効率的な利用

コンテナはハードウェア仮想化や完全なオペレーティングシステムの実行といった追加のオーバーヘッドを必要としないため、Dockerは仮想マシンよりもシステムリソースを効率的に利用します。アプリケーションの実行速度、メモリ消費量、ファイルストレージなど、あらゆる面で従来の仮想マシン技術よりも効率的です。

3.2 起動時間の短縮

従来の仮想マシン技術では、アプリケーションサービスの起動に数分かかることがよくあります。Dockerコンテナアプリケーションはホストカーネル上で直接実行され、完全なオペレーティングシステムの起動を必要としないため、数秒、あるいは数ミリ秒単位での起動を実現できます。これにより、プロジェクトの展開時間が大幅に短縮されます。

3.3 一貫したプロジェクト運用環境を確保する

開発中によくある問題の一つは、ローカル環境、テスト環境、本番環境間の不整合です。開発環境とテスト環境ではシステムが正常に動作するのに対し、本番環境では原因不明の不具合が発生する、といった状況はよくあります。Dockerイメージは、カーネルを除く完全なプロジェクトランタイム環境を提供することで、アプリケーションランタイムの一貫性を確保し、開発環境の不整合に起因するデプロイメントの問題を回避します。

3.4 継続的デリバリーとデプロイメント

DevOpsプロフェッショナルにとって理想的なシナリオは、アプリケーションを一度作成または設定すれば、どのサーバーでも正常に動作することです。Dockerは、アプリケーションイメージをカスタマイズすることで、継続的インテグレーション、継続的デリバリー、そしてデプロイメントを実現します。開発者はDockerfilesを用いてイメージを構築し、継続的インテグレーションシステムを用いて統合テストを実行できます。一方、運用担当者はイメージを本番環境に迅速に直接デプロイしたり、継続的デリバリー/デプロイメントシステムを用いてデプロイメントを自動化したりすることも可能です。さらに、Dockerfilesを使用することでイメージ構築が透過的になるため、開発チームだけでなく運用チームもアプリケーションのランタイム環境を把握でき、本番環境へのイメージのデプロイをよりスムーズに行うことができます。

3.5 より簡単なサービス移行

Dockerは一貫性のあるランタイム環境を保証するため、アプリケーションの移行がはるかに容易になります。Dockerは、物理マシン、仮想マシン、パブリッククラウド、プライベートクラウド、さらにはラップトップなど、多くのプラットフォームで実行でき、一貫した結果を得ることができます。そのため、ユーザーは、ランタイム環境の変更によるアプリケーションの誤動作を心配することなく、あるプラットフォームで実行されているアプリケーションを別のプラットフォームに簡単に移行できます。

3.6 メンテナンスと拡張が容易

Dockerの階層化ストレージとイメージ技術により、アプリケーションの繰り返し部分の再利用が容易になり、アプリケーションの保守とアップデートが簡素化されるだけでなく、ベースイメージに基づくイメージの拡張も大幅に簡素化されます。さらに、Dockerチームは、様々なオープンソースプロジェクトチームと協力して、本番環境で直接使用したり、さらなるカスタマイズのベースとして使用したりできる、多数の高品質な公式イメージを維持管理しており、アプリケーションサービスイメージの作成コストを大幅に削減します。

IV. コンテナと仮想マシンの比較

Docker は、従来の仮想化方法とは異なり、コンテナはオペレーティング システム レベルで仮想化を実装し、ローカル ホストのオペレーティング システムを直接再利用しますが、従来の方法ではハードウェア レベルで仮想化を実装します。

従来の仮想マシンと比較すると、Docker には起動速度が速く、サイズが小さいという利点があります。

特徴

ドッカー

仮想マシン

始める

ハードドライブの使用状況

MB

イギリス

パフォーマンス

ネイティブに近い

貧しい

システムサポート能力

1 台のマシンで数千のコンテナをサポートできます。

通常数十

個人ブログのウェブサイト: https://programmerblog.xyz。