Dockerでの作業は簡単な作業ではありません。 この記事では、DockStationプロジェクトの作成を推進した理由と、現時点で既に実装しているものについて説明します。
開始する
私は開発者として8年以上働いていますが、別のOSに切り替えたり、作業中のマシンを変更したりするときに、開発用の開発環境をセットアップするのは常に苦痛でした。
遅かれ早かれ、単一の自律的な開発環境を作成することが必要になったときに、多くの開発者が国境に来ます。 このような環境は、あるマシンから別のマシンに簡単に転送でき、ワンクリックで無効にでき、共有できます。 これを念頭に置いて、すべての道路はVagrantにつながりました。
ただし、過去2年間、私のニーズに合っていると思われる、Dockerという未知の不可解なことがありました。 このプロジェクトは多くの場合賞を授与され、一部の人々は過去20年間に作成されたものの中で最高のものとさえ呼んでいます。 しかし、夜に少しDevOps-ilを持っているという事実(誰もまだ見ていません)にもかかわらず、私にとってこれらの「隔離されたコンテナ」はすべて暗い森でした。 それにもかかわらず、私はこの興味深いことを整理することにしました。
Docker:これらすべてを管理する方法は?
開発の最初の手順はそれほど単純ではありませんでしたが、ある時点でdev.byコミュニティのメンバーがSlackチャットで私を助けてくれました。
Dockerはそれ自体を展開ツールとして位置づけていますが、開発環境に対するすべての要件を完全に満たしていることに気付きました。
約1週間ドキュメントの研究に費やした後、私は哲学そのものと、この素晴らしいツールを使用する方法を理解しました。 混乱しているのは、コンテナを起動するたびに実行する必要があるキロメートル単位のCLIコマンドだけです。 どうやら、私はそのようなトラブルに一人ではありませんでした。男たちは武器庫に別のDocker Composeツールを持っていたので、これらすべてのキロメートルコマンドを単一の構成ファイルに保存できました。 そしてそれはそうです-あなたは喜ぶことができますが、現実は、いつものように、残酷であることが判明しました。
個人用および作業中の作業プロジェクトを収集して転送し、50個以上のコンテナを受け取った結果、「すべてを管理する方法は?」という質問に出会いました。 私は自分の経験から知っています。コンソールがある場合は、GUIに「マウスで使用できる」ものが必要です。 この全体を管理するのに役立つアプリケーションの検索が開始されました。
競合他社は「グローバルな問題を解決しません」
最初に出会ったのはKitematic-コンテナーを操作できるDocker GUIアプリケーションです。
質問なしでコンテナを停止、再起動、削除したり、ログの表示やコンテナへの迅速なアクセスなど、多くの操作を行うことができます。
しかし、これは私の問題を解決しませんでした:私のプロジェクトからたくさんのコンテナを分解してグループ化します。 そして、それは世界的な問題を解決しませんでした。コンテナを操作し、その状態を監視するのに少しだけ役立ちました。 次に、Rancherを見てみましたが、それでもそうではありません。このツールは、展開のために設計および強化されており、開発者にとってはあまり適していません。 ShipyardやPortainerなどの同様のツールが見つかりましたが、それらはすべて、Kitematicの少し精巧なバージョンでした。 さて、目的の問題に対する解決策はないので、自分で解決します。
DockStation:6か月以上のハードワーク
そのため、プロジェクトごとにコンテナを平凡にグループ化するという通常のアイデアから始めて、製品を作りたいという要望がありました。 そのようなプロジェクトを引っ張るのは非常に困難であり、一人での開発には多くの時間がかかります。 2016年12月、私はこのアイデアを思いつき、友人のPavel Lozkoに共同開発の提案を出しました。 彼はDockerで働いていたため、プロジェクトの一般的な意味をすぐに理解し、参加することに同意しました。
2か月後、私はプロジェクトのフルタイムの仕事に切り替えました。
その結果、私たちはすべてのルールに違反し、Hello Worldステージで既に開始する必要がある素晴らしいスタートアップの達人のアドバイスを無視し、MVPで投資家に資金を求めて駆けつけました。 6か月にわたる骨の折れる苦労の末、プロジェクトはリリースされました。
このプロジェクトはもともと次の原則に基づいていました。
- DockerとDocker Composeを使い始めるために、最初に大量のドキュメントを学ぶ必要はありません。 哲学自体と原則はまだ理解する必要がありますが。
- 簡単に起動するためにタンバリンと踊る必要がないように、アプリケーションはネイティブである必要があります(Kitematicはこのコンセプトをより気に入っていました)。
- 下位互換性。 生成されたすべてのプロジェクトは、アプリケーションとCLIの両方で起動する必要があります。 同様に、サードパーティのDocker Composeプロジェクトをアプリケーションにインポートすることもできます。
- 可能な限りGUIに転送できるすべてのもの。
合計、過去10か月の作業を見て回る。
今日は何を知っていますか
- その場でプロジェクトをすばやく作成します。
- docker-compose.yml構成ファイルがあるディレクトリへのパスを指定するだけで、既存のプロジェクトをインポートします。
- Dockerコマンドの解析(ベータ)。 常にdocker runコマンドのみを使用している場合、これらのコマンドを入力するだけでプロジェクトをインポートでき、それらはComposeプロジェクトに転送されます。

- プロジェクトをゼロから作成するには、クリックするだけです。

- プロジェクトとサービスの監視。
いつでも、プロジェクトが動作しているかどうか、動作していない場合はどのサービスが動作していないかを確認できます。 ログを使用して、問題が何であるかを調べます。 全文ログ検索が実装されました。

- サービスおよびコンテナ管理。
- クイックスタート、再起動、サービス、およびそれらに関連付けられているすべてのコンテナを停止します。
- 高速清掃サービスコンテナー。
- ワンクリックでコンテナ内にアクセスします。
- コンテナに関するすべての情報を取得します。
- イメージのバージョンの変更、ポートのバインド、環境変数の再定義と割り当てなど、プロジェクトの構成と管理に必要な多くのこと。

- プロジェクト設定。
頻繁に使用されるプロジェクト設定は、インターフェースを介して変更できます。 すべての変更はすぐにdocker-compose構成に書き込まれます。 何かをカスタムで行う必要がある場合は、問題なく構成設定を手動で編集でき、すべてが機能します。

- ローカルDockerとリモートの両方で動作します。
Dockerへのリモート接続を作成および操作するシステムを実装しました。これにより、リモートコンテナーを完全に管理できます。 非常に強力な機能は、SSH経由でDockerに接続する機能です。これにより、外部ポートを開いてセキュリティを構成するためにDockerを再構成するための多くの作業を回避できます。





- プロジェクト全体および個々のコンテナの両方のリソースの消費に関する統計。
Dockerには、一般にComposeプロジェクトのリソースを監視するという点で非常に弱い点があります。 個々のコンテナのリソースのみを監視できます。 さて、修正しました。 (ちなみに問題がハングアップするかもしれませんが、すぐに表示されます: https : //github.com/docker/compose/issues/1197 )


- リアルタイムのリソース監視。
タスクマネージャーに非常によく似ていますが、コンテナーのみが対象です。

- Docker Machineを使用する
ドライバーをサポートしたDocker Machineで本格的な作業を実装しました。
VirtualBox 、 VMWare 、 Hyper-V

- Docker Hubを使用する
Docker Hubの画像を非常に簡単かつ簡単に操作できます。 画像を検索して設定します。


- 楽しいエキストラ。
- IPコンテナは再起動時に変更されるため、ローカルホスト名を使用してプロジェクトを管理することは非常に簡単ではありません。 この問題を解決しました。IPコンテナを変更すると、/ etc / hostsの現在のホストエントリがインストールされます。
- 設定のオーバーライドのサポートを実装しました。

現在の結果と結果今日、私たちの主なメリットは、製品をリリースしたことです。 プロジェクトにフルタイムで没頭するために仕事を辞め、外部支援なしで合計10か月以上の個人的な時間といくらかのお金を費やして、彼らはプロジェクトを生き返らせ、開発を続けました。 私たちの主なタスクはプロジェクトに取り組むことであったため、スタートアップパーティー、イベント、その他のイベントには参加しなかったため、バッジ、マーク、専門家からの賞はありません。 しかし、今では毎月1000人以上の開発者が私たちのアプリケーションを使用しており、何百もの肯定的なレビューと提案があります。
WebGitHub(プロジェクトはオープンソースではありませんが、すべてのコミュニケーションがあります)