何の問題も、メリットとどこを解決することを最終的に何ドッカーているのですか?

最大のソフトウェア開発悩みの一つは、環境の構成です。ユーザーのコンピュータ環境が異なっている、あなたは自分のソフトウェアを知っていますかどのように、あなたはそれらのマシンにまで実行できますか?ユーザーは、二つのことを確認する必要があります。オペレーティングシステムの設定、さまざまなライブラリやコンポーネントをインストールします。彼らだけは実行する適切なソフトウェアを持っています。たとえば、インストールするには、  Pythonの  アプリケーションを、お使いのコンピュータは、環境変数を設定する必要があり、また、さまざまな依存関係を持っている必要があり、Pythonのエンジンを持っている必要があります。いくつかの古いモジュールが現在の環境との互換性がない場合は、困っています。開発者はしばしば言う:「それは私のマシンで実行することができます」(それは私のマシン上で動作) 、 推論によって、他のマシンを実行する可能性があります。環境設定ので、面倒な、マシンを交換してください、私たちはすべての上にそれを行う必要があり、時間がかかること。多くの人々は、根本的に問題を解決できないと思いますが、ソフトウェアが環境にインストールすることができますか?インストール時に他の言葉では、元の環境は正確にコピーさ。

第二に、仮想マシン

VM(仮想マシン)は、溶液と環境にインストールされています。それは、このような内部でWindowsを実行しているシステムなどのオペレーティング・システム、別のオペレーティングシステムを実行できる  のLinux  システムを。このような認識への適用は、仮想マシンが実際のシステムとまったく同じに見えますが、基礎となるシステムのために、仮想マシンは通常のファイルですので、あなたが削除さを必要としない、他の部分には影響がありません、ありません。ユーザーは、元のソフトウェア仮想マシン環境を復元することができますが。しかし、この解決策にはいくつかの欠点があります。

資源消費とより

メモリとハードディスクの空き容量の仮想マシンの排他的な部分。それが実行されている場合は、他のプログラムは、これらのリソースを使用することはできません。でも、仮想マシンのアプリケーション内で、実メモリの使用が唯一の1MBです、仮想マシンがまだ実行するメモリの数百MBが必要です。

冗長マルチステップ

仮想マシンは、完全なオペレーティングシステム、いくつかのシステムレベルの手順、多くの場合、ユーザのログインとして、スキップすることはできませんです。

スロースタート

あなたは、仮想マシンを起動する必要がどのくらい、どのくらいのオペレーティングシステムを起動します。数分待つ必要があり、アプリケーションが実際に実行することができます。

三、Linuxのコンテナ

そのため、これらの欠点の仮想マシン、Linuxは他の仮想化技術を開発しました:Linuxのコンテナ(のLinux ContaineのRSは、LXCを略します)。

Linuxのコンテナは、オペレーティング・システムの完全なシミュレーションではなく、分離のプロセスではありません。または、通常の過程では、保護層を設定します。処理容器内部のためには、基礎となるシステムの単離を可能にする、仮想リソースの多様にさらされます。

容器は、プロセスレベルであるため、仮想マシンは、比較して多くの利点を有します。

高速起動

コンテナアプリケーション内では、直接基礎となるシステムではなく、仮想マシンプロセスの内部よりも、プロセスです。だから、代わりにオペレーティングシステムを起動するの、マシンを起動する処理容器と同等を開始するには、速度がはるかに高速です。

小さなフットプリント

コンテナは必要なリソースを占有し、それらのリソースが使用されていない取ることはありません。仮想マシン、それは完全なオペレーティングシステムであるので、すべてのリソースを取ることは避けられません。また、複数のコンテナがリソースを共有することができ、仮想マシンが排他的資源です。

小型

限りコンテナファイルは、仮想マシンファイルよりもはるかに小さいので、仮想マシンは、オペレーティングシステム全体をパッケージ化している間コンテナは、使用可能なコンポーネントが含まれていて。

要するに、軽量コンテナ仮想マシンのようなビットは、仮想化環境を提供していますが、はるかに少ないオーバーヘッドを要することができます。

第四に、どのようなドッカーこと?

ドッカーは、Linuxパッケージコンテナは、コンテナが使いやすい提供属するインタフェースをこれは、最も人気のあるLinuxコンテナ・ソリューションです。ドッカーアプリケーションやファイルにパッケージ化されたプログラムの依存性。このファイルが実行され、それが仮想コンテナを生成します。ただ、実際の物理マシン上で実行されているように、仮想コンテナで実行されています。ドッカーでは、環境問題を心配しないでください。全体的に、ドッカーかなりシンプルなインターフェースは、ユーザーが簡単にコンテナを作成して使用することができ、容器の中に自分のアプリケーションを置きます。容器はまた、同じような一般的なコードを管理、バージョン管理、コピー、共有、修飾してもよいです。

五、ドッカー使用

ドッカーの主な目的は、3つのカテゴリがあります。

ワンオフ環境。例えば、地元のテスト他の人のソフトウェア、継続的インテグレーションは、ユニットテストを提供し、環境を構築する場合。

柔軟なクラウドサービスを提供します。ドッカーが閉鎖容器に開くことができるので、動的拡張と容量化に適しています。

マイクロサービスアーキテクチャの形成。複数の容器では、マシンが複数のサービスを実行することができ、マシンはマイクロサービスアーキテクチャでシミュレートすることができます。

六、ドッカーインストール

コミュニティ版(コミュニティのコミュニティエディ:ドッカーは、2つのバージョンが利用可能なオープンソース市販品であるTiの ON、CEと略す)及び(JA Enterprise EditionのTEの EEと略記rprise版)。エンタープライズ版は、有料サービスの数が含まれ、個々の開発者は、一般的にあまりを使用しています。以下は、コミュニティ版のために導入されています。ドッカーのCEのインストールには、公式ドキュメントを参照してください。

マックます。https://docs.docker.com/docker-for-mac/install/

Windowsのします。https://docs.docker.com/docker-for-windows/install/

Ubuntuのします。https://docs.docker.com/install/linux/docker-ce/ubuntu/

Debianのします。https://docs.docker.com/install/linux/docker-ce/debian/

CentOSのします。https://docs.docker.com/install/linux/docker-ce/centos/

Fedoraのします。https://docs.docker.com/install/linux/docker-ce/fedora/

他のLinuxディストリビューションします。https://docs.docker.com/install/linux/docker-ce/binaries/

インストールが完了すると、インストールが成功したことを確認するには、次のコマンドを実行します。

$ドッカーバージョン#または$ドッキングウィンドウinfoDockerが入力されている各コマンドをsudoを避けるために、sudo権限を持つユーザーが必要です、ユーザーがドッカーユーザグループに参加できます(公式文書[1])。クライアントアーキテクチャ- $須藤usermodの-agドッカ$ USERDockerサーバーです。コマンドを実行するには、ドッカー時のコマンドラインは、マシンがドッカーサービスを持っている必要があります。サービスが開始されない場合は、あなたが開始するには、次のコマンドを使用することができます(公式文書[2])。#サービスの使用コマンドsudoのサービスドッカースタート#$ SYST EMCの使用状況の$ sudoのドッキングウィンドウのTLコマンドを起動しsystemctl

七、画像ファイル

内部の画像ファイルにパッケージ化されたアプリケーションとその依存関係にドッカー、。のみ、この文書を通じて、ドッカーコンテナを生成するためです。画像ファイルは、テンプレート・コンテナとして見ることができます。ドッカーに従って生成例容器イメージファイル。同一の画像ファイルには、コンテナは、同時に実行複数のインスタンスを生成してもよいです。画像はバイナリファイルです。実際の開発、画像ファイル、多くの場合、継承を介して他の画像ファイルに加え、いくつかのパーソナライズ設定が生成されます。たとえば、Ubuntuのに基づいて画像、入力されたことができ、あなたのイメージを形成し、Apacheサーバに参加しました。

#は、マシンのすべての画像ファイルを一覧表示します。$ドッカー画像LS#は画像ファイル$ドッキングウィンドウの画像RMは[imagenameの]画像ファイルが一般的であり、マシンのイメージファイルを別のマシンにコピーされ、削除、それはまだ使用することができます。一般的には、時間を節約するために、我々は他の誰かではなく、あなた自身よりも良好な画像ファイルを、makeを使用してみてください。カスタマイズしたい場合でも、それはまた、他の人の画像処理ファイルに基づいてではなく、最初の生産からスタートしなければなりません。共有を容易にするために、画像ファイルが作成され、それはオンラインリポジトリにアップロードすることができます。ドッカーの公式リポジトリドッカーハブは、最も一般的なイメージリポジトリ、最も重要です。また、自分自身のイメージファイルを作成の販売も可能です。

八例:こんにちは世界

以下に、我々は、ドッカーを感じる最も単純な画像ファイル「[3]のHello World」を採用しました。まず、地元の倉庫から画像ファイルをつかむために、次のコマンドを実行します。

$ドッカー上記画像プルライブラリ/ハローワールドコード、ドッキングウィンドウの画像プルクロールイメージファイルコマンド。ライブラリ/ハロー世界は、ライブラリが配置されている画像ファイルのセットがあり、倉庫、内部の画像ファイルの場所です、こんにちは、世界は、画像ファイルの名前です。それはデフォルトのグループになるように画像ファイルので、[4]内部設定ライブラリに配置され、正式なオファーをドッカー、省略することができます。次のようにこのように、上記のコマンドを書くことができます。$]ドッキングウィンドウ画像プルハロー世界の成功クロールした後は、マシン内の画像ファイルを見ることができます。$ドッカーイメージLSは現在、イメージ・ファイルを実行します。$ドッカーコンテナは、実行中のコンテナインスタンスを生成するために、イメージファイルからのhello-worlddockerコンテナrunコマンドを実行します。ドッキングウィンドウコンテナrunコマンドは、画像ファイル機能をつかむ自動的に、注意してくださいました。あなたが見つかったローカルの画像ファイルを指定しない場合、それは自動的に倉庫からグラブます。したがって、前述のドッカー画像プルコマンドが必須工程ではありません。それが成功した場合は、画面上に次の出力を読み込みます。ドッカーからのhello-worldHello実行$ドッカーコンテナ!このメッセージは、インストールが....正常に機能しているように見えることを示しています... このプロンプト、こんにちは世界の出力は実行を停止します後、コンテナは自動的に終了します。サービスが提供されているため、一部のコンテナは自動的に終了されていません。たとえば、Ubuntuのインストールイメージを実行するには、コマンドライン上のUbuntuシステムを体験することができます。これらの船舶のための$ドッカーコンテナ実行-itのUbuntuのbashが自動的に終了していない、あなたは手動で終了ドッキングウィンドウコンテナのkillコマンドを使用する必要があります。$ドッカーコンテナキル[CONTAINID]

九、コンテナファイル

画像ファイル生成容器の例には、コンテナファイルと呼ばれ、また文書です。画像ファイルやコンテナファイル:コンテナが生成されると、他の言葉では、それは同時に2つのファイルがあります。コンテナを閉じ、コンテナはファイルを削除しませんが、それを実行を停止するための容器。

出力容器に終了を備え、コンテナ$ドッキングウィンドウコンテナのls#リストに存在マシンのすべてのコンテナを実行しているマシンに記載されている#コマンドは、コンテナのIDが含まれて--all上のドッキングウィンドウコンテナLSを$。多くの場所は、そのようなドッキングウィンドウコンテナkillコマンド器操作の終了として、このIDを提供する必要があります。コンテナファイルの操作を終了し、まだ削除するドッキングウィンドウコンテナrmコマンドを使用することができ、ディスク領域を占有します。$]ドッキングウィンドウコンテナRMは[ContainerIDの]ドッキングウィンドウコンテナLS --allコマンドを使用し、その後、上記のコマンドを実行したら、削除されたファイルコンテナが消えてしまったでしょう。

テン、Docke RFイルのファイル

イメージファイルを使用することを学んだ後、次の質問は、どのように画像ファイルを生成することができますか?あなたがあなた自身のソフトウェアを宣伝したい場合は、自分の画像ファイルを生成するためにバインドされています。それはどこDockerfileファイルです。これは、画像を構成するために使用されるテキストファイルです。ドッカーバイナリイメージファイルは、文書に従って生成します。Dockerfileファイルを作成する方法を示す例を通じて以下に。

XI例:自分のドッカーコンテナを作ります

ここで私は、ユーザーが内部興亜フレームワークドッカーコンテナを実行することができますDockerfileファイルを、書く方法を、一例として、[5]プロジェクトを、デモにKOA。準備として、[6]のソースコードをダウンロードしてください。

$ gitのクローンhttps://github.com/ruanyf/koa-demos.git$ CDのKOA-デモ

11.1書き込みDockerfileは、新しいテキストファイル.dockerignoreを作成し、プロジェクトのルートディレクトリに、最初のファイル次の内容を記述する[7]。

コード上.gitnode_modulesnpm-DEBUG.LOGは、画像ファイルにパックされていない、3つのパスを除外することを示しています。あなたがパスを除外したくない場合は、ファイルは新しいではないかもしれません。次に、プロジェクトのルートディレクトリ、新しいテキストファイルDockerfileに、以下の内容を書き込む[8]。ノードから:. 8.4COPY / appWORKDIR / appRUN NPMは--registry = HTTPSをインストール:3000上記のコードの5行、以下の意味の合計//registry.npm.taobao.orgEXPOSE。

8.4:ノードからイメージファイルは、公式のノードのイメージを継承し、コロンは、ラベルが8.4、すなわち8.4バージョンのノードでラベルを表します。

。COPY /アプリ:現在のディレクトリ内のすべてのファイルが(.dockerignoreが、パスを除外を除く)、画像ファイル/ appディレクトリにコピーされます。

WORKDIR /アプリ:次のジョブ/アプリのパスを指定します。

RUNのNPMインストール:/ appディレクトリには、NPMの実行の依存関係をインストールするには、コマンドをインストールしてください。すべての依存関係をインストールした後、画像ファイルにパッケージ化されることに注意してください。

外部接続ポートを可能にする、容器口が露出する3000:3000 EXPOSE。

11.2は、画像ファイルがDockerfileファイルを持って作成したら、ドッキングウィンドウのイメージビルドコマンドを使用してイメージファイルを作成することができます。

$ドッカーイメージは、-t KOA-デモ#または$ドッキングウィンドウの画像は、-t KOA-デモを構築する構築..コロンコード上記の0.0.1、イメージファイルの名前を指定するには、-tパラメータは、また、ラベルを指定することができます。指定しない場合、デフォルトのラベルは最新のものです。Dockerfileファイルが置かれているパスを表し、最後のポイントは、例えば、それがポイントであり、電流経路です。それが成功した場合は、新世代の画像ファイルのKOA-デモを見ることができます。$ドッカーイメージLS

11.3は、コンテナドッキングウィンドウコンテナrunコマンドは、イメージファイルからコンテナを生成します。

3000 -it KOA-デモ:8000 -p 3000 -it KOA-デモ/ binに/ bashの#または$ドッキングウィンドウコンテナの実行:8000 -p $ドッカーコンテナの実行、次のようにコマンド上記の各パラメータ0.0.1 / binに/ bashの意味は次のとおりです。

-pパラメータ:マシンのコンテナ港の8000ポートマッピング3000。

-itパラメータ:シェル容器、現在のシェルにマッピングされたが、その後、あなたはマシンを入力して、コマンドウィンドウにある、それはコンテナを通過します。

KOA-デモ:0.0.1:イメージファイルの名前(任意のラベルには、また、ラベルを提供する必要がある場合、デフォルトは最新のラベルです)。

/ビン/ bashの:コンテナの後、最初の内部コマンドの実行を開始します。ここでは、開始bashは、ユーザーがシェルを使用できることを保証するために、です。

すべてがうまくいけば、上記のコマンドを実行して、我々は、コマンドプロンプトに戻ります。

ルートの@ 66d80f4aaf1e:/アプリの#これは、あなたがコンテナ内で持っていることを意味し、容器の迅速な復帰は、内部シェルプロンプトです。以下のコマンドを実行します。ルートの@ 66d80f4aaf1e:この時点で/アプリ#ノードのデモ/ 01.jsは、興亜フレームワークが稼働してきました。このデモは、[9]ルートを書いていないので、ページが表示されますが、「見つかりません」、マシンのブラウザを開き、アクセスhttp://127.0.0.1:8000。この例では、プロセスおよびファイルシステムに露出ドッカー容器内の仮想環境で実行しているノードのプロセスは、ネイティブファイルシステムで、仮想ネットワーク・インタフェースであり、ネットワークインタフェースが分離されて、物理マシンコンテナを定義する必要がありますポートマッピング(地図)。今、コマンドラインとCtrlキーを押しながら+ cの容器内に容器を終了するにはCtrl + dの(またはタイプ出口)を押し、ノードのプロセスを停止します。さらに、コンテナは、ドッキングウィンドウコンテナキルで終了し実行することができます。コンテナID $ドッキングウィンドウコンテナのLS#を識別するために、マシンの別のターミナルウィンドウで#は、指定されたコンテナは$ドッキングウィンドウコンテナは、[ContainerIDの]コンテナが停止され、そして消えませんした後、次のコマンドを使用してコンテナファイルを削除殺す実行し停止します。#削除#--allコンテナID $ドッキングウィンドウコンテナLSを特定し、指定されたコンテナファイル$ドッキングウィンドウコンテナRM [ContainerIDの]も使用することができます--rmパラメータは、コンテナの実行が自動的にコンテナ船が終了した後にファイルを削除するコマンドドッカー。3000 -it KOA-デモ/ binに/ bashの:8000 -p $ドッカーコンテナの実行--rm

11.4 CMDは、コンテナが開始した後、手作業でコマンドノードのデモ/ 01.jsを入力して、ケースに命令します。コンテナの起動後、コマンドが実行されたことを、もはや手動で入力する必要がないので、私たちは、内部Dockerfileでこのコマンドを書くことができます。

ノードFROM:8.4COPY NPMインストール--registry = HTTPS / appWORKDIR / appRUN :. //Registry.npm.taobao.orgEXPOSE 3000CMDノードデモ/ 01.js Dockerfileた上記最後のラインCMDノードデモ/ 01.js以上、コンテナを表す/ 01.js.ノードのデモを開始した後に自動的に実行されます あなたは、中RUNコマンドCMDコマンドとの違いは何ですか求めることができますか?簡単に言えば、RUNコマンドは、結果を画像ファイルにパッケージ化され、建設段階の画像ファイル中に実行され、CMDコマンドは、コンテナが開始した後に実行されます。また、Dockerfileは、複数のRUNコマンドが含まれていますが、一つだけCMDコマンドすることができます。CMDコマンドの後に指定され、ドッキングウィンドウコンテナrunコマンドは(例えば/ binに/ bashの目の前にあるような)コマンドを追加することができないことに注意してください、それ以外の場合は、CMDコマンドをカバーします。さて、コンテナは、次のコマンドを使用することができます開始。$ドッカーコンテナの実行--rm -p 8000:3000 -it KOA-デモ:0.0.1

11.5リリースの画像ファイルコンテナが正常に実行され、それが画像ファイルの妥当性を確認しました。この時点で、我々は他の人が使用できるように、オンラインの画像ファイルを共有して検討することができます。まず、アカウントを登録hub.docker.comかcloud.docker.comを行きます。次に、以下のコマンドを使用してログインします。

画像の局所的なバージョンのための$ドッカーログイン後、ユーザー名とラベル。$ドッカーイメージタグ[imagenameの] [ユーザー名] / [リポジトリ]:[タグ]#インスタンスは、ドッキングウィンドウのイメージタグKOA-デモを$:0.0.1 ruanyf / KOA-デモ:0.0.1またはマークされない場合があり、ユーザー名は、それを再構築します画像ファイル。$ドッカーイメージは、-t [ユーザー名] / [リポジトリ] :. [タグ]最後に、リリースイメージファイルを作成します。$ドッカーイメージプッシュ[ユーザー名] / [リポジトリ]:[タグ]ログイン成功のhub.docker.com後にリリースされ、あなたは画像ファイルがリリースされている見ることができます。

XII。その他の便利なコマンド

ドッカーはまた、いくつかのコマンドに加えて、上記有用なこれらの主な用途です。(1)ドッキングウィンドウコンテナの前にドッカコンテナrunコマンドを起動すると、実行ごとに、新しいコンテナで、新しいコンテナを作成します。同じコマンドの実行は二回、それは、2つの同一のコンテナファイルを生成します。あなたは、コンテナを再利用したい場合は、実行を停止している、既に生成されたコンテナファイルを起動するコマンドを、開始ドッキングウィンドウコンテナを使用する必要があります。

$ドッカー容器は[ContainerIDの(2)ドッカー容器停止ドッカー容器killコマンドの前に容器の動作を終了する開始容器内のメインプロセスにSIGKILL信号に対応します。ドッカーコンテナ停止指令が容器内、次いでSIGKILL信号との時間の期間にわたって送信されたメインプロセスSIGTERM信号に対応し、容器の動作を終了するために使用されます。これら2つの信号の$ bashのコンテナとの違いは、SIGTERM信号を受信した後、[ContainerIDの]アプリケーションを停止し、独自のクリーンアップ作業を終了してもよいが、この信号を無視することができます。あなたはSIGKILLシグナルを受け取った場合、すぐに失われてしまいます進行中のそれらの動作を終了するように強制されます。(3)ドッカー容器logsdockerコンテナログがドッカー容器出力、即ち、容器内部標準出力シェルを表示するためのコマンド。ドッキングウィンドウは、コンテナが-it引数を使用していないときに実行するコマンドを実行する場合は、出力を表示するには、このコマンドを使用する必要があります。$ドッカーコンテナログは[ContainerIDの](4)ドッキングウィンドウコンテナexecdockerコンテナ幹部は、コンテナのドッキングウィンドウの実行を入力するためのコマンド。時間ドッキングウィンドウrunコマンドは、コンテナを実行する場合は、-it引数を使用していない、あなたは、コンテナの中に、このコマンドを使用する必要があります。コンテナ内たら、シェル容器内でコマンドを実行することができます。$ドッカーコンテナexecがマシンにファイルをコピーし、コンテナ内で実行されているドッカーから[ContainerIDの] / binに/ bashの(5)ドッキングウィンドウコンテナcpdockerコンテナのcpコマンドを-it。以下は、現在のディレクトリの文言のコピーです。$ドッカーコンテナCP [CONTAINID]:[/パス/に/ファイル]。

おすすめ

転載: www.cnblogs.com/772933011qq/p/11542185.html