ドッカー パッケージアプリケーションを作成します コンテナと呼ばれます。各コンテナは、Aの識別環境を提供します 仮想マシン (VM)。 VMとは異なり、Dockerコンテナ フルオペレーティングシステムを実行しないでください 。彼らはあなたのホストのカーネルを共有し、そしてソフトウェアレベルで仮想化します。
ドッカーの基本
Dockerは、ソフトウェア開発者およびシステム管理者のための標準的なツールとなっています。それはあなたのシステムの残りの部分に影響を与えずにアプリケーションをすばやく起動するためのきちんとした方法です。あなたは単一の新しいサービスをスピンアップすることができます
Docker Run.
指図。
コンテナは、OSパッケージの依存関係から独自のソースコードへのアプリケーションを実行するために必要なすべてをカプセル化します。コンテナの作成手順を命令として定義します。
DockerFile
。 DockerはDockerFileを使用してANを構築します
画像
。
画像はコンテナで利用可能なソフトウェアを定義します。これは、オペレーティングシステムISOを使用してVMを起動するのと同じように同じです。画像を作成した場合、Dockerユーザーはアプリを起動することができます。
Docker Run.
。
ドッカーはどのように機能しますか?
コンテナは、部分的に仮想化された環境を提供するためにオペレーティングシステムのカーネル機能を利用します。 COMMANDSを使用してコンテナを作成することができます。
千里子
。これはシステムルートの代わりに指定されたルートディレクトリを持つプロセスを開始します。しかし、カーネルの機能を直接使用するのは面倒です。
Dockerは、コンテナの製造、分布、および使用のための完全な解決策です。最近のドッカーリリースはから構成されています いくつかの独立したコンポーネント 。まず、ドッカーがあります cl これはあなたがあなたの端末と対話するものです。 CLIはAにコマンドを送信します ドッカーデーモン 。これはローカルに実行できます リモートホストに 。デーモンはコンテナとそれらが作成された画像の管理を担当します。
最終的なコンポーネントはと呼ばれます コンテナランタイム 。ランタイムは、カーネル機能を実際に起動してコンテナを起動します。 DockerはRunTimesと互換性があります OCI仕様 このオープン標準は、異なるコンテナ化ツール間の相互運用性を可能にします。
あなたが最初に始めるときあなたがDockerの内部働きについて心配する必要はありません。インストール
ドッカー
システムでは、コンテナを構築して実行するために必要なものすべてを提供します。
なぜ多くの人がドッカーを使うのですか?
コンテナはソフトウェア開発における多くの一般的な課題を解決するため、非常に人気がありました。一度コンテンツ化してどこでも実行する機能 間のギャップを減らします あなたの開発環境とあなたの生産サーバー。
コンテナを使用すると、すべての環境が同じであるという自信があります。新しいチームメンバーがある場合は、
Docker Run.
独自の開発インスタンスを設定するには。サービスを起動すると、Dockerイメージを使用してプロダクションに展開できます。 NS
ライブ環境
「マシンで動作する」シナリオを避けて、ローカルインスタンスと完全に一致します。
Dockerはフルブローンの仮想マシンよりも便利です。 VMは、すべての可能なワークロードをサポートするように設計された汎用ツールです。対照的に、容器は軽量で、自給自足で、スローアウェイユースケースに適しています。 Dockerがホストのカーネルを共有するため、コンテナはシステムパフォーマンスにわずかな影響を与えます。コンテナ起動時間は、オペレーティングシステム全体ではなく、プロセスの開始のみを開始しているので、ほとんど瞬間的です。
入門
Dockerは、人気のあるLinuxディストリビューション全てで利用可能です。また、WindowsやMacOSでも実行します。続きなさい あなたのプラットフォームのためのDockerセットアップ指示 それを稼働させて実行する。
簡単なコンテナを起動することで、インストールが機能していることを確認できます。
Docker Run Hello-World
これは基本で新しいコンテナを開始します
こんにちは世界
画像。画像はDockerの使用方法を説明するいくつかの出力を発行します。その後、コンテナは終了し、あなたの端末に戻ります。
画像を作成する
走ったら
こんにちは世界
あなたはあなた自身のドッカー画像を作成する準備ができました。 DockerFileはあなたのサービスを実行する方法を説明しています
必要なソフトウェアをインストールする
そしてファイルにコピーします。これがApache Webサーバーを使用した簡単な例です。
httpdから:最新の ECHO "LOADMODULE HEADERS_MODULE MODULE / MOD_HEADERS.SO">> /usr/local/apache2/conf/httpd.conf コピー.htaccess /var/www/html/.htaccess. copy index.html /var/www/html/index.html コピーCSS / / var / www / html / css
NS
から
線はベースイメージを定義します。この場合、私たちは公式のApacheイメージから始めています。 Dockerは、DockerFileの残りの指示をベースイメージの上に適用します。
NS
走る
ステージはコンテナ内でコマンドを実行します。これは、コンテナの環境で利用可能な任意のコマンドです。私たちはそれを可能にしています
ヘッダー
Apache Module、Theで使用できます
.htaccess.
ルーティングルールを設定するファイル。
最後の行は、作業ディレクトリ内のHTMLとCSSファイルをコンテナイメージにコピーします。あなたのイメージにあなたがあなたのウェブサイトを実行するために必要なものすべてが含まれています。
今、あなたは画像を構築することができます:
Docker Build -T My-Webサイト:V1
DockerはあなたのDockerFileを使って画像を構築します。 Dockerがそれぞれの指示を実行するように、端末の出力が表示されます。
NS
-NS
コマンドで
あなたのイメージにタグを付けます
与えられた名前で
My-Webサイト:V1
)。これにより、将来参照が簡単になります。タグには2つのコンポーネントがあり、コロンで区切られています。最初の部分は画像名を設定しますが、2番目のバージョンは通常そのバージョンを表します。コロンを省略すると、Dockerがデフォルトです
使用するには
最新
タグのバージョンとして。
NS
。
コマンドの最後に、ローカルの作業ディレクトリのDockerFileを使用するようにDockerに指示します。これもまた
ビルドコンテキストを設定します
作業ディレクトリにファイルやフォルダを使用できるようにします。
コピー
DockerFileの指示。
画像を作成したら、コンテナを使用して開始できます。
Docker Run.
:
Docker Run -D -P 8080:80 My-Webサイト:V1
私たちはいくつかの余分なフラグを使っています
Docker Run.
ここ。 NS
-NS
フラグはDocker CLIをコンテナから切り離すようにして、バックグラウンドで実行できるようにします。ポートマッピングが定義されています
-NS
それで、ホスト上のポート8080はコンテナ内のポート80にマッピングされます。あなたが訪問したらあなたのページを見るべきです
localhost:8080
あなたのブラウザで。
ドッカー画像は層から形成されます。 DockerFileの各命令は新しいレイヤーを作成します。高度な建築機能を使用することができます 複数のベースイメージを参照します 以前の画像から仲介層を捨てる。
画像レジストリ
画像があると、レジストリにプッシュできます。登録 集中ストレージを提供します そのため、他の人とコンテナを共有することができます。デフォルトのレジストリです ドッカーハブ 。
イメージを参照するコマンドを実行すると、Dockerは最初にそれがローカルで利用可能かどうかを確認します。そうでなければ、それはDocker Hubからそれを引っ張りようとします。手動で画像を引っ張ることができます
ドッカープル
指図:
Docker Pull HTTPD:最新
画像を公開したい場合は、
ドッカーハブ
アカウント。走る
ドッカーログイン
ユーザー名とパスワードを入力してください。
次に、あなたのDocker Hubのユーザー名を使ってあなたのイメージにタグを付けます:
DockerタグMy-Image:最新のDocker-Hub-username / My-Image:最新
今、あなたはあなたのイメージを押すことができます:
Docker Push Docker-Hub-username / My-Image:最新
他のユーザーはあなたのイメージを引っ張ってコンテナを開始することができます。
あなたはできる 独自のレジストリを実行してください プライベートイメージストレージが必要な場合いくつかのサードパーティサービスも ドッカーレジストリを提供しています Docker Hubに代わるものとして。
コンテナの管理
Docker CLIには、実行中のコンテナを管理できるようにするためのいくつかのコマンドがあります。以下を知るために最も有用なもののいくつかがここにあります:
コンテナのリスト
ドッカーPS.
実行中のコンテナをすべて表示します。の追加
-NS
フラグは停止した容器も表示されます。
コンテナを停止し始める
コンテナを停止するには、実行します
Dockerは私のコンテナを停止します
。交換
私のコンテナ
コンテナの名前またはIDを使用して。あなたはからこの情報を得ることができます
ps
指図。停止したコンテナが再起動されます
Dockerが私のコンテナを起動します
。
それらの主なプロセスが生き続ける限り、コンテナは通常実行されます。
ポリシーを再起動します
コンテナが停止またはホストが再起動したときに何が起こるかを制御します。合格
- 常にRestart
に
Docker Run.
停止した直後にコンテナを再起動するには。
シェルを入手する
あなたはできる
コマンドを実行してください
コンテナを使用しています
Docker Exec My Container My-Command
。これは、コンテナのメインプロセスとは別の実行可能ファイルを手動で呼び出すときに便利です。
に追加する
-それ
インタラクティブアクセスが必要な場合はフラグを付けます。これにより、実行してシェルに落ちることができます
Docker Exec - マイコンテナSh.
。
監視ログ
Dockerは、コンテナの標準入力および出力ストリームに放出された出力を自動的に収集します。 NS
Dockerは私のコンテナを記録します
コマンドは、端末内部のコンテナのログを表示します。 NS
- 従う
Flag連続ストリームを設定して、ログをリアルタイムで表示できるようにします。
リソースのクリーンアップ
古い容器と画像はシステム上ですぐに積み重ねることができます。使用する
Docker RM My Container
そのIDまたは名前でコンテナを削除します。
画像のコマンドは
Docker RMI My Image:最新の
。画像のIDまたはフルタグ名を渡します。タグを指定した場合は、タグが割り当てられていないまで、画像は削除されません。それ以外の場合、指定されたタグは削除されますが、画像の他のタグは使用可能なままです。
バルククリーンアップはこれを使用して可能です
ドッカープルーン
指図
。これにより、すべての停止コンテナと冗長画像を削除する簡単な方法があります。
グラフィカル管理
端末があなたのものではない場合は、サードパーティのツールをに使用できます。 Docker用のグラフィカルインタフェースを設定します 。 Webダッシュボードを使用すると、インストールをすばやく監視および管理できます。彼らはまたあなたがあなたのコンテナーの遠隔操作を受けるのを助けます。
永続的なデータストレージ
Dockerコンテナはデフォルトではエフェメラルです。コンテナのファイルシステムに加えられた変更は、コンテナが停止した後に保持されません。安全ではありません
ファイルストレージシステムの形式を実行します
コンテナーでは、基本で始まった
Docker Run.
指図。
に近づいているいくつかの異なるアプローチがあります 永続データの管理 。最も一般的なものはDockerボリュームを使用することです。 ボリュームは記憶装置です それはコンテナファイルシステムにマウントされています。ボリューム内のデータは、リンクされたコンテナが停止した後にそのまま残ります。将来別のコンテナを接続できます。
セキュリティを維持する
Dockerがオペレーティングシステムとあなたのサービスの間にいくつかの分離を提供するため、ドッキー化されたワークロードは彼らのベアメタルの対応者よりも安全になる可能性があります。それにもかかわらず、Dockerは潜在的なセキュリティ問題です。
通常はASを実行します
根
悪意のあるソフトウェアを実行するために悪用される可能性があります。
開発ツールとしてDockerを実行しているだけの場合、デフォルトのインストールは一般的に使用できます。あなたが生きる前に、ネットワーク露出デーモンソケットを持つ生産サーバーとマシンは硬化する必要があります。
Dockerのインストールを監査します 潜在的なセキュリティ問題を特定するため。がある 利用可能な自動ツール それはあなたが弱点を見つけて解決策を提案するのを助けることができます。あなたもすることができます 個々のコンテナ画像をスキャンします 内から悪用される可能性がある問題のために。
複数のコンテナを使用しています
NS
ドッカー
コマンドは一度に1つのコンテナでのみ機能します。しばしば集計でコンテナを使用したいと思うでしょう。
ドッカーは作曲しています
コンテナを宣言的にyamlファイルに定義できるツールです。単一のコマンドでそれらをすべて開始できます。
これは、プロジェクトがデータベースサーバに依存するWebバックエンドなどの他のサービスに依存する場合に役立ちます。両方のコンテナを定義できます
docker-compose.yml.
そして合理化された管理からの利益
自動ネットワーキング
。
これがシンプルです
docker-compose.yml.
ファイル:
バージョン: "3"
サービス:
アプリ:
Image:app-server:最新の
ポート:
- 8000:80
データベース:
イメージ:データベースサーバー:最新の
ボリューム:
- データベースデータ:/データ
ボリューム:
データベースデータ:
これは2つのコンテナを定義します(
アプリ
と
データベース
)。データベースにボリュームが作成されます。これはにマウントされます
/データ
容器内。 App Serverのポート80はホスト上の8000として公開されています。走る
Docker - Up -Dを作成します
ネットワークとボリュームを含む両方のサービスをスピンアップする。
Docker Composeの使用はあなたを可能にします
再利用可能な書き込み
他人と共有できるコンテナ定義。あなたはAをコミットすることができました
docker-compose.yml.
開発者が記憶させる代わりに、あなたのバージョン管理に取り組んでください
Docker Run.
コマンド
複数のコンテナを実行するための他のアプローチもあります。 Dockerアプリ 別のレベルの抽象化を提供する新興のソリューション。エコシステムの他の場所では、 ポドマンはドッカーの代替案です これにより、端末内のコンテナの「ポッド」を作成できます。
コンテナオーケストレーション
Dockerは通常、生産中のAS-ISです。それは今のようなオーケストレーションプラットフォームを使うのが一般的です クエステス またはDocker Swarmモード。これらのツールは扱うように設計されています 複数のコンテナレプリカ スケーラビリティと信頼性を向上させます。
Dockerは、より幅広いコンテナ化運動に1つのコンポーネントにすぎません。オーケストレーター
同じことを利用してください
Container Runtime Technologiesは、製造に適した環境を提供するための環境を提供します。複数のコンテナインスタンスを使用する
ローリングアップデートを許可します
機械間の配布と同様に、展開をもっと変更や停止に弾力があるようにします。正規の
ドッカー
CLIは1つのホストをターゲットとし、個々のコンテナで動作します。
コンテナ用の強力なプラットフォーム
Dockerはあなたがコンテナーで働く必要があるすべてをあなたに与えます。ソフトウェア開発とシステム管理のための重要なツールとなっています。主な利点は、個々のサービスに対する絶縁と移植性の向上です。
Dockerと知り合いになるには、基本的なコンテナと画像の概念を理解する必要があります。これらを適用するには、ワークロードをコンテンツ化する専用の画像や環境を作成するために適用できます。