[編集者注] Dockerはオープンソース化されて以来、大手企業から幅広い注目を集めています。おそらく今では、インターネット企業は、自社の運用・保守システムが Docker (または Pouch など) に基づいていない場合、自らをインターネット企業と呼ぶことを恥ずかしく思うでしょう。 この記事では、Docker の基本的な概念、初歩的な使用方法、Docker を使用すると効率が大幅に向上するシナリオについて簡単に紹介します。 原理 Docker に関する最も単純で、やや誤った理解は、「Docker は非常に優れたパフォーマンスを備えた仮想マシンである」というものです。 上で述べたように、これは多少誤った発言です。 Docker は従来の仮想マシン技術よりもはるかに高度です。具体的には、Docker はホスト マシン上のハードウェア セットを仮想化してからオペレーティング システムを仮想化することはありません。代わりに、Docker コンテナ内のプロセスをホスト マシン上で直接実行できるようになります (Docker はファイル、ネットワークなどを分離します)。このようにして、Docker は「より軽量になり、より高速に実行され、同じホスト マシン上でより多くのインスタンスを作成できるようになります。」 Docker には、イメージ、コンテナ、リポジトリという 3 つの主要な概念があります。
関連コマンド 1. インストール Dockerのインストールは非常に便利です。 macOS、Ubuntu などにはワンクリックインストールツールまたはスクリプトがあります。詳細については、公式の Docker チュートリアルを参照してください。 インストール後、ターミナルに docker と入力します。使用方法の説明が表示されれば、ほとんどの場合インストールは成功していることになります。 2. ベースイメージを見つける DockerHub などの Web サイトでは多くの画像が提供されています。通常は、そこからベースイメージとして画像を見つけて、その後の操作を続行します。 ここでは、Ubuntu ベースイメージを例にしてノード環境を構成します。 「リンクが長すぎる」ため、Docker Hubへの国内アクセスが遅くなる可能性があります。多くの国内メーカーが提供する画像アクセラレータが使用可能です。 3. ベースイメージを取得する docker pull コマンドを使用して、関連するハブ Web サイトからローカル コンピューターにイメージをプルします。同時に、プル処理中に、画像が複数の「レイヤー」に従ってプルされていることがわかります。
すべてのローカルイメージを表示するには、docker images を実行します。
4. Dockerコンテナを作成する docker create コマンドは、イメージからコンテナを作成し、コンテナ ID を出力します。
コンテナを実行するには、docker start を使用します。
実行中のコンテナを表示するには、docker ps を使用します。
docker exec を使用してコンテナに入ります。
docker run を使用して、コンテナを 1 つのステップで作成して実行し、コンテナに入ります。
5. コンテナにNode環境をインストールする コンテナに入った後の操作は通常の環境と同じです。シンプルなノード環境をインストールします。
6. コンテナをコミットして新しいイメージを作成する Ghost を使用して Windows をインストールするのと同じように、多くの場合、独自のイメージをカスタマイズし、その中にいくつかの基本環境 (上記のノードなど) をインストールして、必要な基本イメージを作成したいと考えています。ここで docker commit が役に立ちます。
次に、新しく作成した画像を試してみましょう。
大丈夫そうですね。 7. イメージをDocker Hubにプッシュする 画像が作成されたので、それを他の人とどのように共有しますか?ここでは、Docker Hub にプッシュする例を取り上げます。 最初のステップは、docker hub にアカウントを登録し、ターミナルでそのアカウントにログインしてプッシュすることです。
8. Dockerfileを使う時が来た 継続的インテグレーションに Docker を使用していますか? Docker について知る前にこれを聞いたことがあるはずですが、これはどこかからコードをコピーして実行する必要があることを意味します (はい、少し travis-ci に似ています)。 Dockerfile の時間です! Dockerfile は、一連のコマンドとパラメータで構成されるスクリプトです。 docker build を使用してスクリプトを実行し、イメージをビルドして自動的に何かを実行します (travis-ci の .travis.yml に似ています)。 Dockerfile の形式は次のとおりです。
ベースイメージは、FROM BASE_IMAGE から指定する必要があります。 より詳細な仕様と手順については、Dockerfile リファレンスを参照してください。ここでは、上記の rccoder/myworkspace:v1 をベースイメージとして、例としてルートディレクトリにディレクトリを作成します。 Dockerfile は次のとおりです。
次に以下を実行します:
Dockerfile の力により、Docker には無限の可能性が残されています。 何ができるか ここまで述べてきましたが、実際の運用環境で Docker は何ができるのでしょうか?よく使われるものは以下のとおりです(コメントに追加してください) 1. 複数環境の展開切り替え ビジネス開発においては、開発環境とオンライン環境を区別する必要があることがよくあります。 Docker を使用すると、開発環境のコードと環境をそのまま汚染なくオンライン環境に移行できます。特定の自動化プロセスと組み合わせることで、自動リリースを実現できます。 2. フロントエンドクラウド構築 node_modules の厄介な問題により、同じリポジトリで開発している複数の人が、異なるパッケージ バージョンを使用している複数の人に遭遇することが多く、他の人と異なるバージョンを使用していることに気付かないこともあり、最終的にはリリース後にオンラインの問題が発生します。 Docker を使用すると、クラウド内に新しいコンテナを作成し、汚染なく低コストでリモートでコードをビルドし、さまざまな人が同じバージョンを使用することを保証できます。 3. 複雑な環境でもワンクリックで設定 シナリオによっては、非常に複雑な環境を構成する必要がある場合があります (たとえば、新入生は Java 環境を構成する必要があります)。この場合、Docker を使用して環境構成をカプセル化し、低コストで誰でも使用できるイメージを直接生成できます。 4. 継続的インテグレーションユニットテスト travis-ciに似ている 5. 同じアプリケーションの複数のバージョンとファイルの分離 たとえば、このプロジェクトはノード 6 に依存し、そのプロジェクトはノード 8 に依存します (これは単なる例であり、ハード ディスクが十分に大きい場合は、nodeinstall を使用して解決することをお勧めします)。 100 個の WordPress プログラムが同じサーバー上で実行されています (相互汚染を防ぐために Docker を使用して分離を確立できます)。 6. お金を節約する まあ、低コストの安全性が売られ過ぎです(霧)。 |
<<: Office 365の中国でのビジネスは商用利用開始4年目で400%以上成長
>>: 米財務省はアリババに対し、米国内でのクラウドコンピューティングサービスの提供を禁止する可能性がある。
Hosthatchは、米国東海岸のニューヨークデータセンターにVPSクラウドサーバーサービスを展開し...
現在の SEO の道は少し迷っているようで、人々はとらえどころがないと感じています。たとえば、検索エ...
クラウドの力を活用することで、企業はコストを削減し、スケーラビリティを高め、セキュリティを強化し、俊...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています科学技術の...
過去 50 年間、メインフレームが徐々に PC に置き換えられるにつれ、インターネットと携帯電話が私...
ゴン・ハイヤン新浪テクノロジー 神雲芳創業者のGong Haiyan氏の辞任と分散化により、Jiay...
Heytea、Sandunban、Nayukiなど、最近人気が出ている新しい消費者ブランドを数えてみ...
みなさんこんにちは。私はハルビン仮想および現実ウェブサイト設計です。最近仕事が忙しくて、何も書く時間...
モバイルインターネットプロモーション業界に参入したばかりの新人でも、この業界で数年間働いているベテラ...
Open Policy Agent (OPA) は、企業が分散アプリケーション、Kubernetes...
「 7年前に私がF5に入社することを決めたときを振り返ると、顧客やパートナーはそれを無謀な決断だと思...
求人サイトで求人に応募したことがある人なら誰でも、面倒な登録手続きに不安を感じるという私と同じ気持ち...
ネットワーク仮想化技術は近年、ネットワーク分野で最も注目されている技術の一つとなっており、データセン...
現在、o2oは誇張されている典型的な用語です。広義では、オンラインとオフラインの垣根を越え、シームレ...
タイトルはユーザーにとって最も重要なメタデータであり、これはまさに Google Play ディレク...