ホームページ >バックエンド開発 >Golang >なぜ docker は開発に golang を選んだのでしょうか?

なぜ docker は開発に golang を選んだのでしょうか?

青灯夜游
青灯夜游オリジナル
2019-12-23 13:58:203906ブラウズ

Docker は、PaaS プロバイダー dotCloud によってオープンソース化された LXC に基づく高度なコンテナ エンジンです。ソース コードは Github でホストされています。Go 言語に基づくオープン ソースであり、Apache2.0 プロトコルに準拠しています。

なぜ docker は開発に golang を選んだのでしょうか?

Docker は Golang で書かれていますが、Golang をインストールしなくても直接実行できます。そこで次の質問があります。なぜ Docker は Golang をインストールする必要がないのですか?

Docker では Golang のインストールが必要ないのはなぜですか?

Docker に Golang のインストールが必要ない理由は、私が Java のバックグラウンド開発者であり、Python で開発された一部のオープン ソース ツールが Ubuntu で使用されており、Java と Python の両方のオープン ソース ツールが使用されているためです。対応するオペレーティング環境をインストールする必要があります:

# Java では少なくとも JRE がインストールされている必要があり、便宜上 JDK もインストールされる場合があります

# Python では少なくとも Python 開発環境がインストールされている必要があります。また、オープン ソース ツールでは、他の Python のサードパーティ パッケージをインストールする必要がある場合もあります。

Java を例に挙げます。Java ソース プログラムはコンパイラによってコンパイルされ、バイトコードになります。バイトコードは仮想マシンによって解釈され、実行されます。仮想マシンは実行する各バイトコードを変換してインタプリタに送信し、インタプリタは特定のマシン上のマシンコードに変換して、特定のマシン上で実行します。コンパイラーとインタープリターはどちらも実際には JVM の一部です。 Java のプラットフォームへの独立性は実際には JVM によって実現されており、Java プログラムも JVM 上で実行する必要があります。

しかし、Golang は、glibc 以外の外部依存関係を持たない静的実行可能ファイルをコンパイルして生成します。

それでは、glibc とは何でしょうか?

実際、glibc は GNU によってリリースされた libc ライブラリであり、C ランタイム ライブラリです。 glibc は Linux システムの最下位 API であり、他の実行ライブラリのほとんどは glibc に依存しています。これは、Docker が実際に Unix/Linux システム上で Golang なしで実行できることも意味します。

Docker が開発に Golang を使用することを選択したのはなぜですか?

まず第一に、当社の現在の主流サービスはすべて Unix/Linux オペレーティング システムを使用しており、Golang はサードパーティへの依存度がほとんどありません (glibc のみ)。これは制限でもあり、利点でもあります。この場合、Golang を使用して開発された Docker は、基本的に Unix/Linux オペレーティング システムがインストールされているほとんどのサーバーで完全に実行できるためです。

概要

多くのプログラミング言語にはいくつかの制限や欠点がありますが、私たちは自分のニーズに応じて、場合によっては特定のシナリオに応じてプログラミング言語を選択する必要があります。より適切なプログラミング言語を使用すると、より大きなメリットが得られる可能性があります。フレームワークの選択も同様で、誰もが良いと言っているハイエンドや人気のフレームワークが必ずしも良いというわけではなく、自社のビジネスに合った最適なフレームワークを選ぶ必要があります。

推奨学習: ビデオ チュートリアルをご覧ください

以上がなぜ docker は開発に golang を選んだのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。