タグ付けされた質問 「docker」

4
Unixバイナリに近い他の言語と比較して、Javaを使用する場合、Dockerを使用する開発上の利点は無効になりますか?
私は言った友人がいました: Dockerは素晴らしいです。これを使用して、本番環境とそのすべての癖をローカルマシンに複製できます。その後、すべてのステージングワークフローを介して、そのインスタンスを超高速で直接展開できます。 これは、開発者がRuby、PHP、またはGoを記述している場合に当てはまります。オペレーティングシステムへの方向バイナリリンクがありました。 ただし、Javaを使用する場合は、オペレーティングシステムと言語の間に仮想層が既に存在するため、基盤となるオペレーティングシステムに関係なく、操作の一貫性が保たれます。 おそらく、この場合、開発者がローカルで運用環境を複製するためにDockerを実行する利点は無効になります。(Ruby、PHP、またはGoと比較)。 私はこれについて議論することを受け入れており、反対の見解を(証拠とともに)聞きたいと思っています。 Unixバイナリに近い他の言語と比較して、Javaを使用する場合、Dockerを使用する開発上の利点は無効になりますか?
53 java  deployment  jvm  docker 

3
Dockerイメージにテストを含める必要がありますか?
テストに関しては、2つのオプションが考えられます。 テストとアプリケーションの両方を1つのイメージに入れます。 イメージにはアプリケーションコードのみを含めます。メインイメージの後にビルドし、いくつかのレイヤーを追加するテスト固有のコンテナーを作成します(テストコード、依存関係など)。 最初のオプションでは、コンテナをテストし、テストしたとおりに出荷できます。明らかな欠点は、不要なコード(および潜在的にテストデータ)がイメージに含まれることです。 2番目のオプションでは、出荷されるイメージはテストされるイメージとまったく同じではありません。 どちらも悪い戦略のように見えます。3番目のより良い戦略はありますか?

3
開発環境をDockerコンテナで実行する利点はありますか?
主にWindows上のVisual Studioを使用して開発しています。問題は、しばらくするとWindowsが行き詰まり、Windowsを再インストールする必要に直面することです。同様に、新しいマシンへの切り替えも問題です。 開発環境には多くの依存関係(追加のMSBuild構成ファイル、VS拡張、npm、Javaなど)があるため、Windowsの再インストールは苦痛です。複雑なシステムを持っているのは私一人ではないと思いますが、それを元に戻すにはおそらく1日はかかります。 私は実際にはDockerを使用していませんが、理論的にはWindowsコンテナで開発環境をセットアップし、それを出荷するだけです(たとえば、ラップトップにコピーして新しいWindowsインストールを入れてください) 。 私が説明していることは可能ですか?パフォーマンス、信頼性などの欠点はありますか?他の落とし穴?
12 docker 

2
マルチテナンシーまたはマルチインスタンス?
私はWebベースのSaaSソリューションを構築しようとしており、マルチテナンシーまたはマルチインスタンスを使用するかどうかわからないところに行きました。私が達成しようとしていることと、それぞれのアプローチの長所と短所(読んだことによると私の意見)について説明しようと思います。どちらか一方のアプローチで何かを見逃した場合に備えて、提案を含めてください。 私が構築しようとしているアプリケーションは、前述したように、企業がアカウントを作成できるSaaSソリューションであり、各アカウント/企業には独自のユーザー、顧客、製品、サービスなどがあります。各ユーザー; 会社の従業員は誰ですか。1つのアカウント/会社に関連するユーザーは、その会社の顧客、製品、およびサービスにのみアクセスできます。企業は無制限の数の顧客、製品、サービスを持つことができるため、各企業には独自のデータセンターが必要です。 そのため、共有データベース(ログインのためにすべてのユーザーの資格情報を保存する)と複数のデータベース共有スキーマ(アカウント/会社ごとのデータベース)を作成することにしました。基本的に、マルチテナント。 次に、誰かが代わりにマルチインスタンスを使用することを提案しました。そこでは、各会社が他の会社から完全に分離されたアプリケーションの独自のインスタンス(つまり、コード、ライブラリ、データベース、フレームワークなど)を持ちます。これは、各テナントのユーザーが会社のデータにのみアクセスできることを確認する必要がある追加のレイヤーを処理する必要がないため、より良いように聞こえます。私がこのアプローチを達成するためにDockerに依存していることを言及するのは良いことだと思います(私は以前にそれを使用したことがありません)が、機能が不足していると思います(詳細は後で説明します)将来必要になるでしょう(少なくとも私はしませんでした)少し検索しても見つかりません)。 ただし、どちらのアプローチにも長所と短所があるため、どちらのアプローチを選択するか決定できませんでした。ここにリストがありますが、両方の知識が不足しているので、私にはわかりません。私が知らないことや、Webで見つけられなかった問題の解決策がある可能性があります。[各アプローチには私が1つずつ比較した順序付けられたリスト] マルチテナンシー: 共有ホスト/ハードウェア、共有コード、およびマルチデータベース。 それはだ簡単にコードと修正のバグの機能(共有コード)を拡張します。 ハードウェアを拡張する(クラウドサービスを使用できる)か、コードに変更を加えずに個々のテナントのデータベースを別のシステムに移動するのは困難です。 最も重要なことは、前述したように、ユーザーが実際に自分の会社に属していて、他の会社の情報にアクセスしていないことを確認するために、システムに追加のレイヤーを追加する必要があります。 マルチインスタンス: 共有または非共有のホスト/ハードウェア、インスタンスごとのコード、インスタンスごとのデータベース。 それはだ難しく(あなたは1つのインスタンスまたはドッカーコンテナに機能/機能を追加し、他の人にそれを展開することができドッカーでそれを行う方法がある場合、私はわからない)機能や修正のバグを拡張します。 それはだ簡単に別のホスト/ハードウェアに全体のインスタンスを移動すること。 インスタンスとして、各インスタンスは独自のデータベースを持っているので、そのレイヤーを処理する必要はありません。 (各テナントのインスタンスを手動で作成するなどして)手動で何かを実行したい場合は、長所と短所のすべてが冗長であり、それがDockerソリューションを疑う理由です。質問の理由。解決策を参照して質問に答えていただければ幸いです。なぜこのアプローチが他のアプローチよりも優れていると思いますか。 それが役立つ場合(多分?)、バックエンド(すべてRESTful)のメインフレームワークとしてLaravelを使用しています。

1
本番環境で使用しない場合に、ソフトウェア開発プロセスでdockerを使用する理由は何ですか?
Dockerには、ソフトウェア開発者の大規模なチーム(100)で私の職場の問題を解決する多くの可能性があり、私の職場の問題を解決するために使用されます。これも: 持つドッカーホストのクラスタを使用すると、上のジョブを実行できること 持つCIエージェントは、ドッキングウィンドウのイメージとして実行する必要があることとあなたが水平にスケールアップすることができますので、(とすべてのビルドが完全にクリーンで一貫していることを保証します) Android、JS、およびJavaビルド用のさまざまなエージェントの専門化 複数のコンテナーにまたがって並行してJUnitテストを実行する 以下のような開発ツール持つソナーとし、NPMJS で実行中の ドッキングウィンドウは、簡単にバージョン管理、チェックインとCIのパイプラインでそれらをアップグレードすることができますので(専用ホスト上に) フィードバックは私に戻ってきました: これがうまく機能していることはすばらしいことですが、Dockerエコシステムを理解することは、一部の人々にとって精神的な飛躍となります。dockerを本番環境で実行しないことはすでに確立されているため、このツールで人材をスキルアップすることに投資する理由はないと思います。 私の質問は、本番環境で使用しない場合に、ソフトウェア開発プロセスでdockerを使用する理由は何ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.