初心者のための12の興味深いDockerプロジェクトのアイデア[2022]
公開: 2021-01-07現在、アプリは、DevOps以前の方法で開発およびデプロイされていません。 DevOpsがITおよびソフトウェア業界の主流になって以来、運用インフラストラクチャを根本的に変えてきました。 現在、開発者とオペレーターは協力してアプリを迅速かつ効率的に構築、テスト、デプロイしています。 これこそが、Dockerが全体像に当てはまるところです。
Dockerは、コンテナー化ソフトウェア、より正確にはPaaSツールであり、アプリとその環境を小さなチャンクに断片化して、任意の環境とマシンに手間のかからない方法で保存およびデプロイできます。 コンテナ化により、複数のコンテナ(アプリ、そのシステムファイル、環境を含む)が、すべてのリソースを共有することなく、1つの仮想マシンでスムーズに動作します。
その結果、同じ仮想マシンで複数のアプリケーションを実行できます。各アプリケーションは、オペレーティングシステム、CPU、メモリ、ストレージ、およびその他の重要なリソースを所有しているかのように実行されます。
Dockerエコシステムは、Moby、Kubernetes、Containeredの4つの主要なプロジェクトで構成されています。 ただし、それだけではありません。Dockerには、これら3つのプロジェクトよりもはるかに多くのものがあります。 Dockerコミュニティは、世界中の開発者がどこでも実行できるアプリを構築およびデプロイできるように、Dockerを使用した場合とDocker用の両方でクラス最高のプロジェクトとツールの開発に毎日積極的に取り組んでいます。 DevOpsを学びたいのであれば、Dockerは学ぶべき重要なセクションです。
Swiggy、Quora、IMDBなどのアプリケーションの構築方法を学ぶ
この投稿では、すべての意欲的な開発者が知っておくべき最高のDockerプロジェクトのいくつかに焦点を当てます!

目次
Dockerプロジェクトのトップアイデア
1.RancherVM
Dockerを使用する人なら誰でも、おそらくRancherが何であるかを知っています。 これは、最も広く使用されているコンテナオーケストレーションおよびスケジューリングフレームワーク( Docker Swarm 、 Kubernetes 、 Mesos )のホストを含むサービスとしてのコンテナベンダーです。 RancherVMは、Dockerコンテナ内でVMを実行できるようにするRancherのあまり知られていないプロジェクトの1つです。 公開鍵、計算ノード、VMを管理し、WebブラウザからVNCコンソールにアクセスするためのWebUIが装備されています。
RancherVMを使用すると、VMポッドとも呼ばれるKubernetesポッド内で実行されるVMを構築できます。 各VMポッドには、仮想マシンインスタンスを実行するコンテナが含まれています。 現在、RancherVMはKVMイメージのみをサポートしています。 したがって、任意のKVMイメージをDockerイメージとしてパッケージ化し、任意のDockerレジストリー(DockerHubなど)を使用して配布し、RancherVMで実行できます。
さらに、RancherVMは、カスタムリソース定義(CRD)を使用してKubernetesAPIを拡張します。 SSHセッションの開始を許可されるベースイメージ、コンピューティングリソースの量、およびキーペアを指定するVirtualMachineCRD仕様を定義できます。 次に、Kubernetesコントローラーは、指定された仕様に従ってVMポッドを作成し、VirtualMachineCRDステータスで同じものを表示します。
詳細:初心者向けのエキサイティングなDevOpsプロジェクトトップ10 [2020]
2. Dockercraft
2015年11月、MicrosoftはDockercraftを世間の注目を集める前にリリースしました。 これはGitHubでオープンソースとしてリリースされ、 Microsoftが25億米ドルで購入した人気のゲームであるMinecraftで開発者がDockerコンテナを管理できるように明示的に設計されています。
GitHubによると、Dockercraftは、Minecraftの3D環境で「Dockerコンテナを視覚化および管理するためのシンプルなMinecraftDockerクライアント」です。 これは、Minecraftに実装されている複雑なDockerマネージャーではなく、Dockerコンテナー内のスイッチを視覚化して切り替える単純な方法です。
Dockercraftを使用するには、PCにフルバージョンのMinecraftがインストールされている必要があることを覚えておくことが重要です。 すでにお持ちの場合は、 GithubからDockercraftをダウンロードできます。 セットアップが完了したら、Dockercraftコンテナーを実行し、カスタムMinecraftサーバーであるCuberiteに参加する必要があります。

3.ワイン
Dockerの最大の欠点は、Docker化されたアプリがクロスプラットフォームではないことです。つまり、LinuxでDockerWindowsアプリをネイティブに実行することはできません。 この問題を解決するために、 Wineが作成されました。 Wine on Dockerは、ローカルアプリケーションが世界中のどこからでも実行されるのと同じように、WindowsアプリをLinuxOSで実行できるようにするために開発されました。 DockerではWineと呼ばれますが、 GitHubではDocker-Wineと呼ばれます。
Wineは、 Wine互換性レイヤーを使用してLinux上のWindowsアプリをサポートします。 Wineには、ローカルとリモートの両方をサポートするダイナミックビデオドライバーとVirtualGLが付属しているため、すぐに使用できるNvidiaカードとNvidiaドライバー、さらにはMesaドライバーを使用する他のカードでも十分に機能するはずです。 ブランチの最新のドライバーであれば、インストールしたドライバーに自動的に適応するようにWineを構成できます。
4. Docker-Mon
現在、Dockerイメージの監視サービスはほんの一握りです。たとえば、 Shipyardなどです。 そして、開発者/プログラマーがシェル内のすべての重要な要件にアクセスできるツールを愛していることは、十分に確立された事実です。 Docker-Monは、そのようなコンソールDocker監視ツールの1つです。 Docker-monは、シェル中心のダッシュボードフレームワークであるblessed-contribに基づいています。
このプロジェクトはまだ進行中の作業であり、まだ起動されていないDocker統計機能に依存しています。 したがって、Docker-Monを使用するには、マスタービルドまたは今後のv1.5.0のいずれかが必要になります(v1.5.0-rc1の起動はここで確認できます)。
5.乗客-Docker
PhusionPassengerがRails開発者のお気に入りであることは誰もが知っています。 このアプリサーバーの主な目標は、開発者がアプリケーションをスムーズに実行できる適切な環境を作成することです。 このアイデアが、Passenger-Dockerプロジェクトの作成のきっかけとなりました。 目的は、本番環境にDockerを実装したい開発者向けの実用的なデフォルトのベースイメージを開発することでした。
Passenger-Dockerは、Ruby、Python、Node.js、およびMeteorWebアプリイメージのベースとして機能するように設計されたDockerイメージのスイートです。 Phusion Passengerのコアマントラを維持しながら、Passenger-Dockerプロジェクトは、Webアプリ用のDockerイメージを作成するプロセスを簡素化および迅速化することを目指しています。
6. KubeVirt
KubeVirtは、Kubernetes用のVM管理アドオンです。 これは、Kubernetes上に仮想化ソリューションを構築するための共通の基盤を提供するために開発されました。 基本的に、Kubernetesはコンテナを管理するために作成されたものであり、他のタイプのインフラストラクチャを管理するためのものではありません。 ただし、Kubernetesを使用してVMクラスターをオーケストレーションすることができます。 これがKubeVirtの機能です。Kubernetesに機能を追加して、VMをシームレスにサポートできるようにします。
KubeVirtは、 Kubernetesのカスタムリソース定義APIを介して追加の仮想化リソースタイプを組み込むことにより、Kubernetesの機能を拡張することを目的としています。 KubeVirtを使用して、事前定義されたVMの構築、VMの起動、VMの停止、VMの削除、およびKubernetesクラスターでのVMのスケジュール設定を行うことができます。 ただし、KubeVirtはまだ作業中です。
続きを読む: Kubernetes Networking:ネットワークモデルを理解するための完全なガイド
7.ドケット
Docketは、BitTorrentを介した超高速のデプロイを容易にするカスタムDockerレジストリです。 これにより、Dockerイメージをマシンの大規模なクラスター全体に驚異的な速度でデプロイできます。 Docketは、Gopher Gala Golangの48時間のハッカソンで、48時間で設計および開発されました。 Golangで記述されたDocketはユーザーフレンドリーで、プライベートDockerレジストリーとうまく連携できます。
Docketは、3つの主要コンポーネントで構成されています–
- Docket Registry:レジストリとして機能するRESTサービスです。 クライアントからDockerイメージtarballを受信し、メタデータをデータベースに保存し、それらからトレントを作成してシードすることができます。
- Docket Client:エンドユーザーが対話するインターフェースです。 これにより、レジストリで使用可能なイメージを表示し、イメージをレジストリにプッシュし、レジストリからイメージをプルできます(これにより、BitTorrentの展開がトリガーされます)。
- BitTorrentトラッカー: DocketにはBYOT(トラッカーを持参)機能がありますが、 BitTorrentを追跡するためにopentrackerをインストールすることをお勧めします。
8.コンテナ移行ツール(CMT)
Dockerコンテナーの良いところは、Dockerがインストールされている任意のタイプのホストで実行できるように、移植性があることです。 ただし、Dockerには、実行中のコンテナーをネットワークを介して1つのクラスターから別のクラスターに移動できる組み込み機能がありません。 課題に加えて、Checkpoint&Restore(CR)はまだ比較的新しい機能であり、コンテナーユーザーは一般的に利用できません。 CRにはその機能についてある程度の理解が必要であり、通常、CR機能に精通していないほとんどのユーザーは、ソースホストとターゲットホストの違い/制限により、CRの実行中にエラーが発生します。
Container Migration ToolまたはCMTは、この移行の問題に対処するために特別に開発されました。 CMTの作成の背後にある考え方は、DockerまたはrunCで使用できる外部コマンドラインツールを作成することでした。これにより、移行前の検証を実行し、適切なターゲットホストを自動検出することで、異なるホスト間のコンテナーのライブ移行が容易になります。
9. dockerfile_lint
リンターは、ツールチェーンを前面から開発する上で重要なコンポーネントです。 これらはJavaScript開発者によって広く使用されており、多数の開発者が共有コードベースで作業する場合に特に便利です。 dockerfile_lintは、 Dockerfilesのルールベースのリンターです。
dockerfile_lintルールを使用して、ファイル構文、任意のセマンティクス、およびルールファイルの作成者によって決定されたベストプラクティスの属性を確認できます。 また、リンターを使用して、Dockerイメージに対してLABELルールをチェックできます。 ルールファイルはYAMLで記述されています。 すべてのルールは正規表現を使用して実装され、一度にDockerfileの1つの命令で実行できます。 ルールファイルは4つのセクションで構成されています–
- プロファイルセクション:ユーザーが特定のDockerfileに適切なルールファイルを選択するのに役立つルールファイルに関する必要な情報を提供します。
- 一般セクション:一般的な構文規則が含まれています。
- 行ルールセクション: Dockerfile内の特定の命令で実行する必要のあるルールが含まれています。 各命令の構文をチェックするためのルールがあります。
- 必須の命令セクション:有効と見なされるようにDockerfileに存在する必要のある命令のリストが含まれています。
10. Dockermix
Dockermixは、マルチコンテナーDocker環境の開発と管理に使用されるコマンドラインツールです。 このプロジェクトでは、コンテナーセットは、DockerAPIで使用可能なオプションをエミュレートするYAML形式で定義されています。 Dockermixの作成の背後にある目的は、開発者がテストと開発のために複雑なマルチノード環境を簡単に起動、オーケストレーション、およびデプロイできるようにすることでした。
Dockermixプロジェクトは、開発がToscanini組織の下で行われるようになり、 Maestroに名前が変更されました。 現在のソースコードにアクセスするには、 Maestroプロジェクトをチェックアウトできます。
11.Dockerクックブック
Docker Cookbookには、Dockerのインストール、Dockerコンテナーの構築、管理、実行に必要なすべてのリソースが含まれています。 このDockerプロジェクトは、Docker、Inc.によって配布されているDockerコンテナエンジンにのみ関連付けられており、 DockerエコシステムツールやCgroupsやAUFSなどの他のテクノロジーには対応していません。
Docker Cookbookを使用するには、Chefv12.15以降がマシンにインストールされている必要があります。 Cookbookは、Amazon Linux、Fedora、CentOS 7、Debian 8/9、Ubuntu 14.04/16.04などの複数のプラットフォームのサポートを提供します。 また、アップストリームのDockerパッケージリポジトリを自動的に設定できます。

12.ドック
Dokkuは、Dockerを利用したミニHerokuであり、これまでに開発された中で最小のPaaS実装です。 このPaaSソリューションを使用すると、ユーザーはアプリケーションを構成して、別のサーバー上の実稼働環境にデプロイできます。 Dockerを使用して、開発者がアプリケーションのライフサイクル全体を構築および管理できるようにします。
Dokkuはどのマシンにもインストールでき、安価なクラウドプロバイダーでも使用できます。 さらに、Dokkuプラグインを任意の言語で記述し、オンラインで共有して、すでに利用可能なプラグインを拡張することができます。
世界のトップ大学からオンラインでソフトウェア開発コースを学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。
まとめ
これらは、Dockerを基盤として開発された多くのプロジェクトのほんの一部です。 次のプロジェクトでこれらのDockerツールのすべてが必要になるわけではありませんが、多数のオプションがあることを知っておくとよいでしょう。
ビッグデータについて詳しく知りたい場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをご覧ください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニング、9以上のプロジェクトと課題、IIITを提供します。 -B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との雇用支援。
