Docker-quick-guide

提供:Dev Guides
移動先:案内検索

Docker-概要

Dockerはコンテナー管理サービスです。 Dockerのキーワードは、 develop、shiprun どこでもです。 Dockerの全体的なアイデアは、開発者がアプリケーションを簡単に開発し、コンテナに入れて、どこにでも展開できるようにすることです。

Dockerの最初のリリースは2013年3月であり、それ以来、特にアジャイルベースのプロジェクトに直面して、現代世界の開発の流行語となっています。

Dockerの概要

Dockerの機能

  • Dockerには、コンテナを介してオペレーティングシステムのフットプリントを小さくすることにより、開発の規模を縮小する機能があります。
  • コンテナを使用すると、開発、QA、オペレーションなどのさまざまなユニットにまたがるチームが、アプリケーション間でシームレスに作業しやすくなります。
  • Dockerコンテナはどこにでも、物理マシンや仮想マシン、さらにはクラウドにデプロイできます。
  • Dockerコンテナーは非常に軽量であるため、非常に簡単にスケーラブルです。

Dockerのコンポーネント

Dockerには次のコンポーネントがあります

  • Docker for Mac -Mac OS上でDockerコンテナを実行できます。
  • Docker for Linux -Linux OS上でDockerコンテナを実行できます。
  • Windows用Docker -Windows OS上でDockerコンテナを実行できます。
  • Docker Engine -Dockerイメージの構築とDockerコンテナの作成に使用されます。
  • Docker Hub -これは、さまざまなDockerイメージをホストするために使用されるレジストリです。
  • Docker Compose -これは、複数のDockerコンテナーを使用してアプリケーションを定義するために使用されます。

これらのすべてのコンポーネントについては、後続の章で詳しく説明します。

Dockerの公式サイトはhttps://www.docker.com/です。このサイトには、Dockerソフトウェアに関するすべての情報とドキュメントがあります。 また、さまざまなオペレーティングシステムのダウンロードリンクもあります。

LinuxでのDockerのインストール

Dockerのインストールを開始するには、Ubuntuインスタンスを使用します。 まだお持ちでない場合は、Oracle Virtual Boxを使用して仮想Linuxインスタンスをセットアップできます。

次のスクリーンショットは、Oracle Virtual Boxにインストールされた単純なUbuntuサーバーを示しています。 demo という名前のOSユーザーがあり、サーバーへの完全なルートアクセス権を持つシステムで定義されています。

デモボタン

Dockerをインストールするには、以下の手順に従う必要があります。

  • ステップ1 *-Dockerをインストールする前に、正しいLinuxカーネルバージョンが実行されていることを確認する必要があります。 Dockerは、Linuxカーネルバージョン3.8以降でのみ動作するように設計されています。 これを行うには、次のコマンドを実行します。

なまえ

このメソッドは、Linuxシステムに関するシステム情報を返します。

構文

uname -a

オプション

*a* -これは、システム情報が返されるようにするために使用されます。

戻り値

このメソッドは、Linuxシステム上で次の情報を返します-

  • カーネル名
  • ノード名
  • カーネルリリース
  • カーネルバージョン
  • 機械
  • プロセッサ
  • ハードウェアプラットフォーム
  • オペレーティング・システム

uname –a

出力

上記のコマンドを実行すると、次の結果が得られます-

出力

出力から、Linuxカーネルのバージョンは4.2.0-27であり、バージョン3.8よりも高いことがわかります。

  • ステップ2 *-次のコマンドで実行できる最新のパッケージでOSを更新する必要があります-
apt-get

この方法は、インターネットからLinuxシステムにパッケージをインストールします。

構文

sudo apt-getアップデート

オプション

  • sudo - sudo コマンドを使用して、コマンドがルートアクセスで実行されるようにします。
  • update - update オプションを使用すると、Linuxシステムですべてのパッケージが更新されます。

戻り値

None

sudo apt-get update

出力

上記のコマンドを実行すると、次の結果が得られます-

出力例

このコマンドはインターネットに接続し、Ubuntu用の最新のシステムパッケージをダウンロードします。

  • ステップ3 *-次のステップは、必要なDockerパッケージをダウンロードするために、後でDockerサイトと連携するために必要な証明書をインストールすることです。 次のコマンドで実行できます。
sudo apt-get install apt-transport-https ca-certificates

必要なDockerパッケージ

  • ステップ4 *-次のステップは、新しいGPGキーを追加することです。 このキーは、Dockerに必要なパッケージをダウンロードするときにすべてのデータが暗号化されるようにするために必要です。

次のコマンドは、IDが58118E89F3A912897C070ADBF76221572C52609Dのキーを keyserver hkp://ha.pool.sks-keyservers.net:80からダウンロードし、 adv キーチェーンに追加します。 この特定のキーは、必要なDockerパッケージをダウンロードするために必要であることに注意してください。

新しいPGPキー

ステップ5 *-次に、使用しているUbuntuのバージョンに応じて、関連するサイトを aptパッケージマネージャー*の docker.list に追加して、Dockerパッケージを検出できるようにする必要があります。 Dockerサイトからダウンロードし、それに応じてダウンロードします。

OSはUbuntu 14.04であるため、リポジトリ名を「deb https://apt.dockerproject.org/repoubuntu-trusty main」として使用します。

そして、前述のように、このリポジトリを docker.list に追加する必要があります。

echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main”
   | sudo tee/etc/apt/sources.list.d/docker.list

Dockerリスト

ステップ6 *-次に、 apt-get updateコマンド*を発行して、Ubuntuシステム上のパッケージを更新します。

APT-GET更新コマンド

ステップ7 *-パッケージマネージャーが正しいリポジトリを指していることを確認する場合は、 apt-cacheコマンド*を発行して実行できます。

apt-cache policy docker-engine

出力では、https://apt.dockerproject.org/repo/%20 [https://apt.dockerproject.org/repo/]へのリンクを取得します。

APT-GET更新コマンド

ステップ8 *- apt-get updateコマンド*を発行して、ローカルシステム上のすべてのパッケージが最新であることを確認します。

APT-GETパッケージの更新

ステップ9 *-Ubuntu Trusty、Wily、およびXenialの場合、linux-image-extra- *カーネルパッケージをインストールする必要があります。これにより、 aufsストレージドライバー*を使用できるようになります。 このドライバーは、Dockerの新しいバージョンで使用されます。

次のコマンドを使用して実行できます。

sudo apt-get install linux-image-extra-$(uname -r)
   linux-image-extra-virtual

Aufs Storage Driver

  • ステップ10 *-最後のステップはDockerをインストールすることです。次のコマンドでこれを行うことができます-
sudo apt-get install –y docker-engine

ここでは、 apt-get はインストールオプションを使用してDocker WebサイトからDockerエンジンイメージをダウンロードし、Dockerをインストールします。

Docker-engineは、Ubuntuベースのシステム向けのDocker Corporationの公式パッケージです。

Docker-engine

次のセクションでは、インストールされたDockerのバージョンを確認する方法について説明します。

Dockerバージョン

実行中のDockerのバージョンを確認するには、次のコマンドを発行できます-

構文

docker version

オプション

  • version -DockerコマンドがインストールされているDockerバージョンを返すようにするために使用されます。

戻り値

出力は、システムにインストールされているDockerバージョンのさまざまな詳細を提供します。

sudo docker version

出力

上記のプログラムを実行すると、次の結果が得られます-

Dockerバージョン出力

Docker情報

システムで実行されているDockerの詳細を確認するには、次のコマンドを発行できます-

構文

docker info

オプション

  • info -DockerコマンドがインストールされたDockerサービスに関する詳細情報を返すことを保証するために使用されます。

戻り値

出力は、システムにインストールされているDockerのさまざまな詳細を提供します-

  • コンテナ数
  • 画像の数
  • Dockerが使用するストレージドライバー
  • Dockerが使用するルートディレクトリ
  • Dockerが使用する実行ドライバー

sudo docker info

出力

上記のコマンドを実行すると、次の結果が得られます-

Docker情報の出力例

Docker for Windows

DockerにはWindowsのすぐに使えるサポートがありますが、Docker for Windowsをインストールするには、次の構成が必要です。

システム要求

Windows OS Windows 10 64 bit
Memory 2 GB RAM (recommended)

Docker for Windowsは、https://docs.docker.com/docker-for-windows/からダウンロードできます。

Windows用Docker

Dockerツールボックス

Docker ToolBoxは、Windows 8.1やWindows 7などの古いバージョンのWindows用に設計されています。 Docker for Windowsをインストールするには、次の構成が必要です。

システム要求

Windows OS Windows 7 , 8, 8.1
Memory 2 GB RAM (recommended)
Virtualization This should be enabled.

Docker ToolBoxは、https://www.docker.com/products/docker-toolboxからダウンロードできます。

Docker Toolbox

Docker-インストール

各製品のインストールを見ていきましょう。

Docker for Windows

インストーラーをダウンロードしたら、それをダブルクリックしてインストーラーを起動し、以下の手順に従います。

  • ステップ1 *-契約条件をクリックしてから、インストールボタンをクリックして、インストールを続行します。

Dockerセットアップ

  • ステップ2 *-完了したら、[完了]ボタンをクリックしてインストールを完了します。

完了

Dockerツールボックス

インストーラーをダウンロードしたら、それをダブルクリックしてインストーラーを起動し、以下の手順に従います。

  • ステップ1 *-開始画面で[次へ]ボタンをクリックします。

Docker ToolBox Next

  • ステップ2 *-次の画面でデフォルトの場所を保持し、[次へ]ボタンをクリックします。

目的地の場所

  • ステップ3 *-デフォルトのコンポーネントを保持し、[次へ]ボタンをクリックして続行します。

コンポーネントの選択

  • ステップ4 *-追加のタスクをそのままにして、[次へ]ボタンをクリックします。

追加タスク

  • ステップ5 *-最後の画面で、[インストール]ボタンをクリックします。

インストール

Docker Toolboxの使用

次に、WindowsでDockerコンテナを操作するためにDocker Toolboxを使用する方法を見てみましょう。 最初のステップは、Dockerツールボックスのインストールの実行時にデスクトップにショートカットが作成されるDocker Toolboxアプリケーションを起動することです。

クイックスタートターミナル

次に、Dockerツールボックスの起動時に実行される構成が表示されます。

Dockerツールボックスターミナル

完了すると、Dockerが構成および起動されます。 Dockerのインタラクティブシェルが表示されます。

インタラクティブシェル

Dockerが正常に実行されることをテストするには、Docker * runコマンド*を使用して、単純な* HelloWorld Dockerコンテナー*をダウンロードして実行します。

Docker *実行コマンド*の動作は以下のとおりです-

docker run

このコマンドは、Dockerコンテナーでコマンドを実行するために使用されます。

構文

docker run image

オプション

  • 画像-これは、コンテナを実行するために使用される画像の名前です。

戻り値

出力は、目的のコンテナでコマンドを実行します。

sudo docker run hello-world

このコマンドは、 hello-world イメージがまだ存在しない場合はダウンロードし、 hello-world をコンテナーとして実行します。

出力

上記のコマンドを実行すると、次の結果が得られます-

Dockerコンテナ

Windows上でUbuntu OSを実行したい場合は、次のコマンドを使用してUbuntuイメージをダウンロードできます-

Docker run –it Ubuntu bash

ここでは、 – it オプションを使用して、対話モードでコマンドを実行するようにDockerに指示しています。

Ubuntu Image

出力では、Ubuntuイメージがダウンロードされ、実行されていることがわかります。その後、Ubuntuコンテナーにrootユーザーとしてログインします。

Docker-ハブ

Docker Hubはクラウド上のレジストリサービスであり、他のコミュニティによって構築されたDockerイメージをダウンロードできます。 独自のDockerビルド画像をDockerハブにアップロードすることもできます。 この章では、DockerハブからJenkins Dockerイメージをダウンロードして使用する方法について説明します。

Dockerハブの公式サイトは-https://www.docker.com/community-edition#/add_onsです

  • ステップ1 *-まず、Dockerハブで簡単なサインアップを行う必要があります。

Docker Hub Singup

  • ステップ2 *-サインアップすると、Docker Hubにログインします。

Docker Hubにログイン

  • ステップ3 *-次に、Jenkinsの画像を参照して見つけます。

Jenkins image

ステップ4 *-同じページを下にスクロールすると、Docker *pull コマンドが表示されます。 これは、ローカルのUbuntuサーバーにJenkinsイメージをダウンロードするために使用されます。

プルコマンド

  • ステップ5 *-次に、Ubuntuサーバーに移動して、次のコマンドを実行します-
sudo docker pull jenkins

Ubuntuサーバー

ジェンキンスを実行するには、次のコマンドを実行する必要があります-

sudo docker run -p 8080:8080 -p 50000:50000 jenkins

上記の sudo コマンドに関する次の点に注意してください-

  • sudo コマンドを使用して、rootアクセスで実行されるようにします。
  • ここで、 jenkins は、DockerハブからダウンロードしてUbuntuマシンにインストールするイメージの名前です。
  • -p は、内部Dockerイメージのポート番号をメインのUbuntuサーバーにマップして、それに応じてコンテナーにアクセスできるようにするために使用されます。

Sudoコマンド

その後、JenkinsをUbuntuマシンのコンテナーとして正常に実行します。

Docker-画像

Dockerでは、すべてが画像に基づいています。 イメージは、ファイルシステムとパラメーターの組み合わせです。 Dockerの次のコマンドの例を見てみましょう。

docker run hello-world
  • Dockerコマンドは特定のものであり、オペレーティングシステム上のDockerプログラムに何かを行う必要があることを伝えます。
  • run コマンドは、イメージのインスタンスを作成することを示すために使用されます。このインスタンスは、その後 container と呼ばれます。
  • 最後に、「hello-world」は、コンテナの作成元のイメージを表します。

次に、Docker Hubで利用可能なCentOSイメージを使用してUbuntuマシンでCentOSを実行する方法を見てみましょう。 Ubuntuマシンで次のコマンドを実行することでこれを行うことができます-

sudo docker run -it centos/bin/bash

上記の sudo コマンドに関する次の点に注意してください-

  • sudo コマンドを使用して、 root アクセスで実行されるようにします。
  • ここで、 centos は、Docker HubからダウンロードしてUbuntuマシンにインストールするイメージの名前です。
  • *─それは、*インタラクティブモード*で実行したいということを言うために使用されます。
  • /bin/bash は、CentOSが起動して実行されるとbashシェルを実行するために使用されます。

Dockerイメージの表示

システム上のDockerイメージのリストを表示するには、次のコマンドを発行できます。

docker images

このコマンドは、システムに現在インストールされているすべてのイメージを表示するために使用されます。

構文

docker images

オプション

None

戻り値

出力は、システム上のイメージのリストを提供します。

sudo docker images

出力

上記のコマンドを実行すると、次の結果が生成されます-

Dockerイメージの表示

上記の出力から、サーバーには* centos、newcentos、および *jenkins の3つのイメージがあることがわかります。 各画像には次の属性があります-

  • TAG -これは画像に論理的にタグを付けるために使用されます。
  • *画像ID *-これは画像を一意に識別するために使用されます。
  • *作成日-イメージが作成されてからの日数。
  • 仮想サイズ-画像のサイズ。

Dockerイメージのダウンロード

画像は、Docker run コマンドを使用してDocker Hubからダウンロードできます。 これを行う方法を詳しく見てみましょう。

構文

次の構文は、Dockerコンテナーでコマンドを実行するために使用されます。

docker run image

オプション

  • 画像-これは、コンテナを実行するために使用される画像の名前です。

戻り値

出力は、目的のコンテナでコマンドを実行します。

sudo docker run centos

このコマンドは、 centos イメージがまだ存在しない場合はダウンロードし、OSをコンテナーとして実行します。

出力

上記のコマンドを実行すると、次の結果が得られます-

Dockerイメージのダウンロード

ダウンロードしたCentOS Dockerイメージが表示されます。 これで、Docker images コマンドを実行してシステム上のイメージのリストを表示すると、 centos イメージも表示できるはずです。

Centos

Dockerイメージの削除

システム上のDockerイメージは、 docker rmi コマンドを使用して削除できます。 このコマンドをさらに詳しく見てみましょう。

docker rmi

このコマンドは、Dockerイメージを削除するために使用されます。

構文

docker rmi ImageID

オプション

  • ImageID -これは削除する必要がある画像のIDです。

戻り値

出力は、削除されたイメージのイメージIDを提供します。

sudo docker rmi 7a86f8ffcb25

ここで、 7a86f8ffcb25newcentos イメージのイメージIDです。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Dockerイメージの削除

画像でさらにDockerコマンドを見てみましょう。

ドッカー画像-q

このコマンドは、画像の画像IDのみを返すために使用されます。

構文

docker images

オプション

  • q -イメージIDのみを返すようにDockerコマンドに指示します。

戻り値

出力には、Dockerホスト上の画像の画像IDのみが表示されます。

sudo docker images -q

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker Images Q

ドッカー検査

このコマンドは、画像またはコンテナの詳細を表示するために使用されます。

構文

docker inspect Repository

オプション

  • リポジトリ-これは画像の名前です。

戻り値

出力には、イメージに関する詳細情報が表示されます。

sudo docker inspect jenkins

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker Inspect

Docker-コンテナー

コンテナは、Docker runコマンドを使用して実行できるDockerイメージのインスタンスです。 Dockerの基本的な目的は、コンテナーを実行することです。 コンテナの操作方法について説明します。

コンテナを実行する

コンテナの実行は、Docker run コマンドで管理されます。 コンテナをインタラクティブモードで実行するには、まずDockerコンテナを起動します。

sudo docker run –it centos/bin/bash

次に、Crtl + pを押すと、OSシェルに戻ります。

コンテナ

その後、Ubuntuサーバー上のCentOSシステムのインスタンスで実行します。

コンテナのリスト

*docker ps* コマンドを使用して、マシン上のすべてのコンテナをリストできます。 このコマンドは、現在実行中のコンテナを返すために使用されます。
docker ps

構文

docker ps

オプション

None

戻り値

出力には、現在実行中のコンテナが表示されます。

sudo docker ps

出力

上記のコマンドを実行すると、次の結果が生成されます-

コンテナのリスト

*docker ps* コマンドのバリエーションをいくつか見てみましょう。

ドッカーps -a

このコマンドは、システム上のすべてのコンテナーをリストするために使用されます

構文

docker ps -a

オプション

  • ─a *− docker ps *コマンドに、システム上のすべてのコンテナをリストするように指示します。

戻り値

出力にはすべてのコンテナが表示されます。

sudo docker ps -a

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker PS A

ドッカーの歴史

このコマンドを使用すると、コンテナを介してイメージで実行されたすべてのコマンドを表示できます。

構文

docker history ImageID

オプション

  • ImageID -これは、それに対して実行されたすべてのコマンドを表示するイメージIDです。

戻り値

出力には、そのイメージに対して実行されたすべてのコマンドが表示されます。

sudo docker history centos

上記のコマンドは、 centos イメージに対して実行されたすべてのコマンドを表示します。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker History

Docker-コンテナーの操作

この章では、コンテナで何ができるかを詳しく調べます。

ドッカートップ

このコマンドを使用すると、コンテナ内の上位プロセスを確認できます。

構文

docker top ContainerID

オプション

  • ContainerID -これは、トッププロセスを表示するコンテナIDです。

戻り値

出力には、コンテナ内の最上位プロセスが表示されます。

sudo docker top 9f215ed0b0d3

上記のコマンドは、コンテナ内の最上位プロセスを表示します。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Dockerトップ

ドッカーストップ

このコマンドは、実行中のコンテナを停止するために使用されます。

構文

docker stop ContainerID

オプション

  • ContainerID -これは、停止する必要があるコンテナIDです。

戻り値

出力には、停止したコンテナのIDが示されます。

sudo docker stop 9f215ed0b0d3

上記のコマンドは、Dockerコンテナ 9f215ed0b0d3 を停止します。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker Stop

ドッカーrm

このコマンドは、コンテナを削除するために使用されます。

構文

docker rm ContainerID

オプション

  • ContainerID -これは削除する必要があるコンテナIDです。

戻り値

出力には、削除されたコンテナのIDが含まれます。

sudo docker rm 9f215ed0b0d3

上記のコマンドは、Dockerコンテナ 9f215ed0b0d3 を削除します。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker RM

ドッカーの統計

このコマンドは、実行中のコンテナの統計を提供するために使用されます。

構文

docker stats ContainerID

オプション

  • ContainerID -これは、統計情報を提供する必要があるコンテナIDです。

戻り値

出力には、コンテナのCPUとメモリの使用率が表示されます。

sudo docker stats 9f215ed0b0d3

上記のコマンドは、コンテナ 9f215ed0b0d3 のCPUおよびメモリ使用率を提供します。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker Stats

ドッカーアタッチ

このコマンドは、実行中のコンテナにアタッチするために使用されます。

構文

docker attach ContainerID

オプション

  • ContainerID -これは、添付する必要があるコンテナIDです。

戻り値

None

sudo docker attach 07b0b6f434fe

上記のコマンドは、Dockerコンテナ 07b0b6f434fe にアタッチされます。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker Attach

Dockerコンテナーに接続したら、上記のコマンドを実行して、そのDockerコンテナーでのプロセス使用率を確認できます。

Docker Attach Container

ドッカー一時停止

このコマンドは、実行中のコンテナでプロセスを一時停止するために使用されます。

構文

docker pause ContainerID

オプション

  • ContainerID -これは、コンテナ内のプロセスを一時停止する必要があるコンテナIDです。

戻り値

一時停止されたコンテナのContainerID。

sudo docker pause 07b0b6f434fe

上記のコマンドは、実行中のコンテナ 07b0b6f434fe のプロセスを一時停止します。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker一時停止

ドッカーの一時停止解除

このコマンドは、実行中のコンテナ内のプロセスを「一時停止解除」するために使用されます。

構文

docker unpause ContainerID

オプション

  • ContainerID -これは、コンテナ内のプロセスの一時停止を解除する必要があるコンテナIDです。

戻り値

実行中のコンテナーのContainerID。

sudo docker unpause 07b0b6f434fe

上記のコマンドは、実行中のコンテナーのプロセスの一時停止を解除します:07b0b6f434fe

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker Unpause

ドッカーキル

このコマンドは、実行中のコンテナ内のプロセスを強制終了するために使用されます。

構文

docker kill ContainerID

オプション

  • ContainerID -これは、コンテナ内のプロセスを強制終了する必要があるコンテナIDです。

戻り値

実行中のコンテナーのContainerID。

sudo docker kill 07b0b6f434fe

上記のコマンドは、実行中のコンテナ 07b0b6f434fe のプロセスを強制終了します。

出力

上記のコマンドを実行すると、次の結果が生成されます-

Docker Kill

Docker –コンテナのライフサイクル

次の図は、Dockerコンテナーのライフサイクル全体を説明しています。

コンテナライフサイクル

  • 最初は、Dockerコンテナは created 状態になります。 その後、Docker run コマンドが使用されると、Dockerコンテナーは実行状態になります。 *Docker kill コマンドは、既存のDockerコンテナーを強制終了するために使用されます。 *Docker pause コマンドは、既存のDockerコンテナーを一時停止するために使用されます。 *Docker stop コマンドは、既存のDockerコンテナーを一時停止するために使用されます。 *Docker run *コマンドは、コンテナを*停止*状態から*実行*状態に戻すために使用されます。

Docker-アーキテクチャ

次の図は、 virtualization の標準および従来のアーキテクチャを示しています。

仮想化

  • サーバーは、複数の仮想マシンをホストするために使用される物理サーバーです。
  • ホストOSは、LinuxやWindowsなどのベースマシンです。
  • Hypervisorは、仮想マシンのホストに使用されるVMWareまたはWindows Hyper Vのいずれかです。
  • その後、ゲストOSとして既存のハイパーバイザーの上に仮想マシンとして複数のオペレーティングシステムをインストールします。
  • 次に、各ゲストOS上でアプリケーションをホストします。

次の図は、Dockersを介して有効化される新世代の仮想化を示しています。 さまざまなレイヤーを見てみましょう。

さまざまなレイヤー

  • サーバーは、複数の仮想マシンをホストするために使用される物理サーバーです。 したがって、このレイヤーは同じままです。
  • ホストOSは、LinuxやWindowsなどのベースマシンです。 したがって、このレイヤーは同じままです。
  • Dockerエンジンである新世代が登場しました。 これは、以前はDockerコンテナーとして仮想マシンであったオペレーティングシステムを実行するために使用されます。
  • すべてのアプリがDockerコンテナーとして実行されるようになりました。

このアーキテクチャの明確な利点は、ゲストOS用に追加のハードウェアを用意する必要がないことです。 すべてがDockerコンテナーとして機能します。

Docker-コンテナーとホスト

Dockerエンジンの良いところは、さまざまなオペレーティングシステムで動作するように設計されていることです。 Windowsでのインストールと、LinuxシステムでのすべてのDockerコマンドを見てきました。 次に、Windows OSのさまざまなDockerコマンドを見てみましょう。

Dockerイメージ

WindowsホストでDocker images コマンドを実行してみましょう。

Docker Images

ここから、 ubuntuhello-world の2つの画像があることがわかります。

コンテナを実行する

次に、Windows Dockerホストでコンテナーを実行しましょう。

コンテナの実行

コンテナを実行することで、WindowsホストでUbuntuコンテナを実行できることがわかります。

すべてのコンテナのリスト

Windowsホスト上のすべてのコンテナをリストしましょう。

コンテナの一覧表示

コンテナの停止

Windowsホストで実行中のコンテナを停止しましょう。

コンテナの停止

したがって、異なるDockerホストに関しては、Dockerエンジンはかなり一貫しており、Linux上で動作するのと同じようにWindows上でも動作することがわかります。

Docker-設定

この章では、Dockerを構成するためのさまざまなオプションについて説明します。

サービスドッカーストップ

このコマンドは、Docker daemon プロセスを停止するために使用されます。

構文

service docker stop

オプション

None

戻り値

Dockerプロセスが停止したことを示すメッセージ。

sudo service docker stop

出力

上記のコマンドを実行すると、次の結果が生成されます-

サービスDocker停止

サービスドッカー開始

このコマンドは、Dockerデーモンプロセスを開始するために使用されます。

構文

service docker start

オプション

None

戻り値

Dockerプロセスが開始されたことを示すメッセージ。

sudo service docker start

出力

上記のコマンドを実行すると、次の結果が生成されます-

Service Docker Start

Docker-コンテナーとシェル

デフォルトでは、コンテナを起動するときに、以下に示すように、コンテナを起動するときに* shellコマンド*も使用します。 これは、以前の章でコンテナを操作していたときに見たものです。

シェルコマンド

上記のスクリーンショットでは、次のコマンドを発行したことがわかります-

sudo docker run –it centos/bin/bash

このコマンドを使用して新しいコンテナを作成し、Ctrl + P + Qコマンドを使用してコンテナを終了しました。 コンテナを終了した後でも、コンテナが存在し続けることが保証されます。

Docker ps コマンドを使用して、コンテナーがまだ存在することを確認できます。 コンテナから直接退出する必要がある場合、コンテナ自体が破棄されます。

コンテナに接続し、それらを破壊することなくきれいに終了する簡単な方法があります。 これを達成する1つの方法は、 nsenter コマンドを使用することです。

*nsenter* コマンドを実行する前に、まず *nsenter* イメージをインストールする必要があります。 それは、次のコマンドを使用して行うことができます-
docker run --rm -v/usr/local/bin:/target jpetazzo/nsenter

Nsenter Image

*nsenter* コマンドを使用する前に、コンテナのプロセスIDを取得する必要があります。これは、 *nsenter* コマンドで必要になるためです。 Docker * inspectコマンド*でプロセスIDを取得し、 *Pid* でプロセスIDをフィルタリングできます。

コマンドの検査

上記のスクリーンショットに見られるように、最初に docker ps コマンドを使用して、実行中のコンテナーを確認しました。 IDがef42a4c5e663の実行中のコンテナが1つあることがわかります。

次に、Dockerの inspect コマンドを使用してこのコンテナの構成を検査し、 grep コマンドを使用してプロセスIDをフィルタリングします。 出力から、プロセスIDが2978であることがわかります。

プロセスIDを取得したので、先に進み、 nsenter コマンドを使用してDockerコンテナーにアタッチできます。

入センター

このメソッドを使用すると、コンテナを終了せずにコンテナに接続できます。

構文

nsenter –m –u –n –p –i –t containerIDコマンド

オプション

  • -u は* Uts名前空間*を示すために使用されます
  • -m は* mount名前空間*に言及するために使用されます
  • -n は*ネットワーク名前空間*を示すために使用されます
  • -p は、*プロセス名前空間*に言及するために使用されます
  • -i sは、コンテナをインタラクティブモードで実行します。
  • -t は、コンテナのI/OストリームをホストOSに接続するために使用されます。
  • containerID -これはコンテナのIDです。
  • コマンド-これはコンテナ内で実行するコマンドです。

戻り値

None

sudo nsenter –m –u –n –p –i –t 2978/bin/bash

出力

Nsenter

出力から、次の点を観察できます-

  • nsenter コマンドを発行すると、プロンプトは直接* bashシェル*に変わります。
  • 次に、 exit コマンドを発行します。 通常、 nsenter コマンドを使用しなかった場合、コンテナーは破棄されます。 しかし、 nsenter コマンドを実行しても、コンテナーはまだ稼働していることに気付くでしょう。

Docker-ファイル

前の章で、コンテナをスピンアップできる* Dockerハブ*からダウンロードされるCentosなどのさまざまなイメージファイルを見てきました。 以下に例を示します。

Dockerファイル

Docker images コマンドを使用すると、システム内の既存の画像を見ることができます。 上記のスクリーンショットから、 centosnsenter の2つの画像があることがわかります。

ただし、Dockerには独自のDockerイメージを作成する機能もあり、 Docker Files を使用して作成できます。 Dockerファイルは、画像の作成方法に関する指示が記載されたシンプルなテキストファイルです。

次の手順では、Dockerファイルの作成について説明します。

ステップ1 *- *Docker File というファイルを作成し、 vim を使用して編集します。 ファイルの名前は、「D」を大文字として「Dockerfile」にする必要があることに注意してください。

Edit Vim

  • ステップ2 *-次の手順を使用してDockerファイルをビルドします。
#This is a sample Image
FROM ubuntu
MAINTAINER [email protected]

RUN apt-get update
RUN apt-get install –y nginx
CMD [“echo”,”Image created”]

上記のファイルについて次の点に注意する必要があります-

 *最初の行「#これはサンプル画像です」はコメントです。* #*コマンドを使用して、Dockerファイルにコメントを追加できます。
* 次の行は、 *FROM* キーワードで始まる必要があります。 これは、Dockerに、どのベース画像から画像をベースにするかを指示します。 この例では、 *ubuntu* イメージからイメージを作成しています。
* 次のコマンドは、このイメージを維持する人です。 ここでは、 *MAINTAINER* キーワードを指定し、メールIDのみを記載します。
* *RUN* コマンドは、イメージに対して命令を実行するために使用されます。 この場合、最初にUbuntuシステムを更新してから、 *ubuntu* イメージにnginxサーバーをインストールします。
* 最後のコマンドは、ユーザーにメッセージを表示するために使用されます。
  • ステップ3 *-ファイルを保存します。 次の章では、イメージの構築方法について説明します。

イメージのビルド

Docker-ビルドファイル

前の章でDockerファイルを作成しました。 次は、Dockerファイルを作成します。 Dockerファイルは次のコマンドで構築できます-

docker build

このコマンドについて詳しく学びましょう。

ドッカービルド

この方法により、ユーザーは独自のDockerイメージを構築できます。

構文

docker build  -t ImageName:TagName dir

オプション

  • -t -画像にタグを付ける
  • ImageName -これは、画像に付ける名前です。
  • TagName -これは、画像に付けるタグです。
  • Dir -Dockerファイルが存在するディレクトリ。

戻り値

None

sudo docker build –t myimage:0.1.

ここで、 myimage は画像に付ける名前で、 0.1 は画像に付けるタグ番号です。

Dockerファイルは現在の作業ディレクトリにあるため、「。」を使用しました。コマンドの最後に、現在の作業ディレクトリを示します。

出力

出力から、マシン上でローカルに使用可能なイメージがないため、UbuntuイメージがDocker Hubからダウンロードされることが最初にわかります。

画像なし

最後に、ビルドが完了すると、必要なすべてのコマンドがイメージで実行されます。

コマンドはイメージ上で実行されます

その後、正常に構築されたメッセージと新しいイメージのIDが表示されます。 Docker * imagesコマンド*を実行すると、新しいイメージを表示できます。

組み込みメッセージとID

これで、新しいイメージからコンテナを構築できます。

Docker-パブリックリポジトリ

パブリックリポジトリを使用して、他のすべてのユーザーが使用できるDockerイメージをホストできます。 例は、Docker Hubで利用可能な画像です。 Centos、Ubuntu、Jenkinsなどの画像のほとんどは、すべて一般に公開されています。 また、Docker Hubの公開リポジトリに公開することで、画像を利用可能にすることもできます。

この例では、「Dockerファイルの構築」の章で構築された myimage リポジトリを使用し、その画像をDocker Hubにアップロードします。 まず、Dockerホスト上の画像を確認して、Dockerレジストリにプッシュできるものを確認します。

Myimage

ここには、「Building Docker Files」の章の一部として作成された myimage:0.1 イメージがあります。 これを使用して、Dockerパブリックリポジトリにアップロードします。

次の手順は、パブリックリポジトリに画像をアップロードする方法を説明しています。

  • ステップ1 *-Docker Hubにログインし、リポジトリを作成します。 これは、イメージが保存されるリポジトリです。 [[1]]

Docker Hub

ステップ2 *-上記の画面で[リポジトリの作成]ボタンをクリックし、 *demorep という名前のリポジトリを作成します。 リポジトリの可視性が公開されていることを確認してください。

Demorep

リポジトリが作成されたら、リポジトリに添付されている pull コマンドをメモします。

リポジトリ

リポジトリで使用される pull コマンドは次のとおりです-

docker pull demousr/demorep

ステップ3 *-Dockerホストに戻ります。 ここで、 *myimage をDocker Hubで作成された新しいリポジトリにタグ付けする必要があります。 これを行うには、Docker * tagコマンド*を使用します。

この* tagコマンド*の詳細については、この章の後半で説明します。

  • ステップ4 *-Dockerログインコマンドを発行して、コマンドプロンプトからDocker Hubリポジトリにログインします。 Dockerログインコマンドは、Docker Hubリポジトリへのユーザー名とパスワードの入力を求めます。

Dockerログインコマンド

ステップ5 *-画像にタグを付けたら、今度は画像をDocker Hubリポジトリにプッシュします。 これを行うには、Docker *push コマンドを使用します。 このコマンドの詳細については、この章の後半で説明します。

ドッカータグ

このメソッドを使用すると、関連するリポジトリに画像をタグ付けできます。

構文

docker tag imageID Repositoryname

オプション

  • imageID -これは、リポジトリにタグ付けする必要があるImageIDです。
  • Repositoryname -これは、ImageIDのタグ付けが必要なリポジトリ名です。

戻り値

None

sudo docker tag ab0c1d3744dd demousr/demorep:1.0

出力

上記の例の出力例を以下に示します。

Dockerタグ

ドッカープッシュ

このメソッドにより、画像をDocker Hubにプッシュできます。

構文

docker push Repositoryname

オプション

  • Repositoryname -これは、Docker Hubにプッシュする必要があるリポジトリ名です。

戻り値

Docker Hubにプッシュされたリポジトリの長いID。

sudo docker push demousr/demorep:1.0

出力

Docker Push

Docker Hubページに戻ってリポジトリに移動すると、リポジトリにタグ名が表示されます。

リポジトリ内のタグ名

Dockerホストにアップロードしたリポジトリをプルしてみましょう。 最初に、ローカルDockerホストから画像 myimage:0.1 および demousr/demorep:1.0 を削除しましょう。 Docker * pullコマンド*を使用して、Docker Hubからリポジトリをプルします。

Docker Pull Command

上記のスクリーンショットから、Docker pull コマンドがDocker Hubから新しいリポジトリを取得し、マシンに配置したことがわかります。

Docker-ポートの管理

Dockerでは、コンテナ自体がポートで実行されているアプリケーションを持つことができます。 コンテナを実行するときに、ポート番号を介してコンテナ内のアプリケーションにアクセスする場合、コンテナのポート番号をDockerホストのポート番号にマッピングする必要があります。 これを達成する方法の例を見てみましょう。

この例では、Docker HubからJenkinsコンテナーをダウンロードします。 次に、Jenkinsのポート番号をDockerホストのポート番号にマップします。

  • ステップ1 *-まず、Docker Hubで簡単なサインアップを行う必要があります。

シンプルなサインアップ

  • ステップ2 *-サインアップすると、Docker Hubにログインします。

Logged Docker Hub

  • ステップ3 *-次に、Jenkinsの画像を参照して見つけます。

コマンドの実行

ステップ4 *-同じページを下にスクロールすると、Docker *pull コマンドが表示されます。 これは、Jenkins ImageをローカルUbuntuサーバーにダウンロードするために使用されます。

ローカルUbuntuサーバー

  • ステップ5 *-Ubuntuサーバーに移動してコマンドを実行します-
sudo docker pull jenkins

画像の検査

  • ステップ6 *-コンテナーによって公開されているポートを理解するには、Docker * inspectコマンド*を使用してイメージを検査する必要があります。

この inspect コマンドの詳細を見てみましょう。

ドッカー検査

このメソッドにより、コンテナまたはイメージに関する低レベルの情報を返すことができます。

構文

docker inspect Container/Image

オプション

  • Container/Image -検査するコンテナまたは画像

戻り値

JSON形式の画像またはコンテナの低レベル情報。

sudo docker inspect jenkins

出力

Docker Inspect Output

*inspect* コマンドの出力はJSON出力を提供します。 出力を観察すると、「ExposedPorts」のセクションがあることがわかり、言及されている2つのポートがあることがわかります。 1つは8080の*データポート*で、もう1つは50000の*コントロールポート*です。

Jenkinsを実行してポートをマッピングするには、Docker run コマンドを変更し、ポートマッピングを指定する「p」オプションを追加する必要があります。 だから、あなたは次のコマンドを実行する必要があります-

sudo docker run -p 8080:8080 -p 50000:50000 jenkins

ポート番号マッピングの左側は、マッピング先のDockerホストポートであり、右側はDockerコンテナーポート番号です。

ブラウザを開いてポート8080でDockerホストに移動すると、Jenkinsが起動して実行されていることがわかります。

ジェンキンのロック解除

Docker-プライベートレジストリ

独自のプライベートリポジトリが必要になる場合があります。 リポジトリをDocker Hubでホストしたくない場合があります。 このために、Dockerのリポジトリコンテナー自体があります。 レジストリ用のコンテナをダウンロードして使用する方法を見てみましょう。

ステップ1 *-Docker *run コマンドを使用して、プライベートレジストリをダウンロードします。 これは、次のコマンドを使用して実行できます。

sudo docker run –d –p 5000:5000 –-name registry registry:2

上記のコマンドについて次の点に注意する必要があります-

  • *レジストリ*は、プライベートリポジトリをホストするために使用できるDockerによって管理されるコンテナです。
  • コンテナによって公開されるポート番号は5000です。 したがって、* – pコマンド*を使用すると、同じポート番号をローカルホストの5000ポート番号にマッピングします。
  • Dockerホストで区別するために、レジストリコンテナーに「2」のタグを付けています。
  • –d オプションは、コンテナを分離モードで実行するために使用されます。 これは、コンテナがバックグラウンドで実行できるようにするためです

分離モード

ステップ2 *-レジストリコンテナが実際に実行されていることを確認するために *docker ps を実行しましょう。

Docker PS

レジストリコンテナが実際に実行されていることを確認しました。

ステップ3 *-次に、既存の画像の1つにタグを付けて、ローカルリポジトリにプッシュできるようにします。 この例では、 *centos イメージをローカルで使用できるため、プライベートリポジトリにタグ付けし、 centos というタグ名を追加します。

sudo docker tag 67591570dd29 localhost:5000/centos

上記のコマンドについて次の点に注意する必要があります-

  • 67591570dd29 は、 centos 画像の画像IDを指します。
  • localhost:5000 はプライベートリポジトリの場所です。
  • プライベートリポジトリでは、リポジトリ名に centos のタグを付けています。

プライベートリポジトリ

ステップ4 *-Docker *push コマンドを使用して、リポジトリをプライベートリポジトリにプッシュします。

sudo docker push localhost:5000/centos

ここでは、 centos イメージを localhost:5000 でホストされているプラ​​イベートリポジトリにプッシュしています。

ローカルホスト

ステップ5 *- *docker rmi コマンドを使用して、 centos のローカルイメージを削除します。 その後、必要な centos イメージをプライベートリポジトリからダウンロードできます。

sudo docker rmi centos:latest
sudo docker rmi 67591570dd29

Docker RMIコマンド

ステップ6 *-ローカルマシンに *centos イメージがないので、次のDocker pull コマンドを使用して、プライベートリポジトリから centos イメージをプルできます。

sudo docker pull localhost:5000/centos

ここでは、 centos イメージを localhost:5000 でホストされているプラ​​イベートリポジトリにプルしています。

Pulling Centos Image

システムに画像が表示されると、 centos 画像も表示されます。

Docker-WebサーバーDockerファイルの構築

Docker Fileを使用して独自のカスタムイメージを作成する方法を既に学習しました。 それでは、コンテナの構築に使用できるWebサーバーイメージを構築する方法を見てみましょう。

この例では、UbuntuでApache Webサーバーを使用してイメージを構築します。 以下の手順に従って、ウェブサーバーのDockerファイルを作成しましょう。

ステップ1 *-最初のステップは、Dockerファイルをビルドすることです。 *vim を使用して、次の情報を含むDockerファイルを作成しましょう。

FROM ubuntu
RUN apt-get update
RUN apt-get install –y apache2
RUN apt-get install –y apache2-utils
RUN apt-get clean
EXPOSE 80 CMD [“apache2ctl”, “-D”, “FOREGROUND”]

上記のステートメントについては、次の点に注意する必要があります-

  • まず、Ubuntuベースイメージから作成するイメージを作成します。
  • 次に、RUNコマンドを使用して、Ubuntuシステム上のすべてのパッケージを更新します。
  • 次に、RUNコマンドを使用して、イメージにapache2をインストールします。
  • 次に、RUNコマンドを使用して、必要なユーティリティapache2パッケージをイメージにインストールします。
  • 次に、RUNコマンドを使用して、システムから不要なファイルを削除します。
  • EXPOSEコマンドは、コンテナ内のApacheのポート80をDockerホストに公開するために使用されます。
  • 最後に、CMDコマンドを使用して、バックグラウンドでapache2を実行します。

Apache2

ファイルの詳細が入力されたので、ファイルを保存するだけです。

ステップ2 *-Docker *build コマンドを実行してDockerファイルをビルドします。 それは次のコマンドを使用して行うことができます-

sudo docker build –t=”mywebserver” .

画像に mywebserver のタグを付けています。 イメージが構築されると、ファイルが構築されたことを示す成功メッセージが表示されます。

Mywebservers

ステップ3 *-Webサーバーファイルが構築されたので、今度は画像からコンテナを作成します。 これを行うには、Docker *run コマンドを使用します。

sudo docker run –d –p 80:80 mywebserver

Docker Run Command

上記のコマンドについて次の点に注意する必要があります-

  • コンテナによって公開されるポート番号は80です。 したがって、 – p コマンドを使用して、同じポート番号をローカルホストの80ポート番号にマッピングしています。
  • –d オプションは、コンテナを分離モードで実行するために使用されます。 これは、コンテナがバックグラウンドで実行できるようにするためです。

WebブラウザーでDockerホストのポート80に移動すると、Apacheが稼働中であることがわかります。

Apacheが実行中

Docker-命令コマンド

Dockerには多数の命令コマンドがあります。 これらは、Dockerファイルに配置されるコマンドです。 利用可能なものを見てみましょう。

CMD命令

このコマンドは、コンテナの実行時に実行時にコマンドを実行するために使用されます。

構文

CMD command param1

オプション

  • コマンド-これは、コンテナが起動されたときに実行するコマンドです。
  • param1 -これはコマンドに入力されたパラメーターです。

戻り値

コマンドはそれに応じて実行されます。

この例では、Dockerファイルに単純な Hello World エコーを入力して、イメージを作成し、そこからコンテナーを起動します。

  • ステップ1 *-次のコマンドでDockerファイルをビルドします-
FROM ubuntu
MAINTAINER [email protected]
CMD [“echo” , “hello world”]

ここでは、CMDは hello world を印刷するために使用されます。

CMD

ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。

ビルドコマンド

  • ステップ3 *-イメージからコンテナを実行します。

コンテナの実行

エントリーポイント

このコマンドは、コンテナの実行時にコマンドを実行するためにも使用できます。 ただし、ENTRYPOINTコマンドを使用すると、より柔軟に対応できます。

構文

ENTRYPOINT command param1

オプション

  • コマンド-これは、コンテナが起動されたときに実行するコマンドです。
  • param1 -これはコマンドに入力されたパラメーターです。

戻り値

コマンドはそれに応じて実行されます。

ENTRYPOINTの詳細を理解するために例を見てみましょう。 この例では、Dockerファイルに単純な echo コマンドを入力して、イメージを作成し、そこからコンテナーを起動します。

  • ステップ1 *-次のコマンドでDockerファイルをビルドします-
FROM ubuntu
MAINTAINER [email protected]
ENTRYPOINT [“echo”]

ENTRYPOINT

ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。

Dockerビルドコマンド

  • ステップ3 *-イメージからコンテナを実行します。

画像からのコンテナー

ENV

このコマンドは、コンテナ内の環境変数を設定するために使用されます。

構文

ENV key value

オプション

  • キー-これは環境変数のキーです。
  • -これは環境変数の値です。

戻り値

コマンドはそれに応じて実行されます。

この例では、Dockerファイルに単純な echo コマンドを入力して、イメージを作成し、そこからコンテナーを起動します。

  • ステップ1 *-次のコマンドでDockerファイルをビルドします-
FROM ubuntu
MAINTAINER [email protected]
ENV var1=Tutorial var2=point

ENV

ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。

ENV Build Dockerコマンド

  • ステップ3 *-イメージからコンテナを実行します。

ENVコンテナの実行

ステップ4 *-最後に、 *env コマンドを実行して環境変数を確認します。

ENVコマンド

WORKDIR

このコマンドは、コンテナの作業ディレクトリを設定するために使用されます。

構文

WORKDIR dirname

オプション

  • dirname -新しい作業ディレクトリ。 ディレクトリが存在しない場合は追加されます。

戻り値

コマンドはそれに応じて実行されます。

この例では、Dockerファイルに単純な echo コマンドを入力して、イメージを作成し、そこからコンテナーを起動します。

  • ステップ1 *-次のコマンドでDockerファイルをビルドします-
FROM ubuntu
MAINTAINER [email protected]
WORKDIR/newtemp
CMD pwd

WORKDIR

ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。

Workdir Build Command

  • ステップ3 *-イメージからコンテナを実行します。

WORKDIR Run Command

Docker-コンテナーのリンク

コンテナリンクを使用すると、複数のコンテナを相互にリンクできます。 ポートを公開するよりも優れたオプションです。 手順を追って、その仕組みを学びましょう。

ステップ1 *-Jenkins *pull コマンドを使用して、Jenkinsイメージがまだ存在しない場合はダウンロードします。

コンテナリンク

ステップ2 *-イメージが利用可能になったら、コンテナを実行しますが、今回は-name オプションを使用してコンテナに名前を指定できます。 これが *source container になります。

名前オプション

  • ステップ3 *-次に、宛先コンテナを起動しますが、今回は、ソースコンテナとリンクします。 宛先コンテナには、標準のUbuntuイメージを使用します。

標準Ubuntuイメージ

*docker ps* を実行すると、両方のコンテナが実行されていることがわかります。
  • ステップ4 *-次に、受け取りコンテナに取り付けます。

受信コンテナ

次に、 env コマンドを実行します。 ソースコンテナとリンクするための新しい変数に気付くでしょう。

新しい変数

ソースコンティナー

Docker-ストレージ

ストレージドライバー

Dockerには、基盤となるストレージデバイスを操作できる複数のストレージドライバーがあります。 次の表に、さまざまなストレージドライバーと、ストレージドライバーに使用されるテクノロジを示します。

Technology Storage Driver
OverlayFS overlay or overlay2
AUFS aufs
Btrfs brtfs
Device Manager devicemanager
VFS vfs
ZFS zfs

ここで、さまざまなストレージドライバーを使用するいくつかのインスタンスについて説明しましょう-

AUFS

  • これは安定したドライバーです。本番用のアプリケーションに使用できます。
  • メモリ使用量が多く、コンテナのスムーズなDockerエクスペリエンスを確保するのに適しています。
  • このドライバーに関連する高書き込みアクティビティがあり、考慮する必要があります。
  • Platform as a Serviceタイプの作業を行うシステムに適しています。

デバイスマッパー

  • これは安定したドライバーです。スムーズなDockerエクスペリエンスを保証します。
  • このドライバーは、ラボでのアプリケーションのテストに適しています。
  • このドライバーは、主要なLinuxカーネル機能と一致しています。

Btrfs

  • このドライバーは、主要なLinuxカーネル機能と一致しています。
  • このドライバーに関連する高書き込みアクティビティがあり、考慮する必要があります。
  • このドライバーは、複数のビルドプールを維持するインスタンスに適しています。

オベレー

  • これは安定したドライバーであり、主要なLinuxカーネル機能と一致しています。
  • メモリ使用量が良好です。
  • このドライバーは、ラボでのアプリケーションのテストに適しています。

ZFS

  • これは安定したドライバーであり、ラボでのアプリケーションのテストに適しています。
  • Platform-as-a-Serviceタイプの作業を行うシステムに適しています。

使用されているストレージドライバーを確認するには、 docker info コマンドを発行します。

構文

docker info

オプション

None

戻り値

このコマンドは、DockerホストにインストールされたDockerコンポーネントに関するすべての関連情報を提供します。

sudo docker info

出力

次の出力は、使用されているメインドライバーが aufs ドライバーであり、ルートディレクトリが /var/lib/docker/aufs に格納されていることを示しています。

AUFSドライバー

データ量

Dockerには、コンテナ間で共有できる個別のボリュームがあります。 これらは*データボリューム*と呼ばれます。 データボリュームの機能のいくつかは次のとおりです-

  • コンテナの作成時に初期化されます。
  • これらは、多くのコンテナ間で共有および再利用できます。
  • ボリューム自体の変更は直接行うことができます。 *コンテナが削除された後でも存在します。

Jenkinsコンテナを見てみましょう。* docker inspect を実行して、この画像の詳細を確認しましょう。 次のコマンドを発行して、 *docker inspect コマンドの出力をテキストファイルに書き込み、それに応じてファイルを表示できます。

sudo docker inspect Jenkins > tmp.txt
  • moreコマンド*を使用してテキストファイルを表示すると、 JENKINS_HOME =/var/Jenkins_home としてエントリが表示されます。

これは、コンテナ内でJenkinsイメージを介して行われるマッピングです。

データボリューム

ここで、コンテナ内のボリュームをローカルボリュームにマップする場合、コンテナの起動時に-vオプションを指定する必要があります。 以下に例を示します-

sudo docker run –d –v/home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins

-vオプションを使用して、 /var/jenkins_home であるコンテナー内のボリュームを、 /home/demo であるDockerホスト上の場所にマップします。

Vオプション

コンテナーを起動した後、Dockerホストの /home/demo の場所に移動すると、そこにあるすべてのコンテナーファイルが表示されます。

コンテナファイル

コンテナのストレージドライバーの変更

コンテナに使用されるストレージドライバに変更したい場合は、コンテナの起動時に変更できます。 これは、 docker run コマンドを使用するときに –volume-driver パラメーターを使用して実行できます。 以下に例を示します-

sudo docker run –d –volume-driver=flocker
   –v/home/demo:/var/jenkins_home –p 8080:8080 –p 50000:50000 jenkins
*–volume-driver* オプションは、コンテナに別のストレージドライバーを指定するために使用されます。

ボリュームドライバー

ドライバーが変更されたことを確認するには、まず docker ps コマンドを使用して、実行中のコンテナーを確認し、コンテナーIDを取得します。 だから、最初に次のコマンドを発行します-

sudo docker ps

次に、コンテナに対して docker inspect を発行し、コマンドを使用して出力をテキストファイルに入れます。

sudo docker inspect 9bffb1bfebee > temp.txt

Docker Against Command

テキストファイルを参照し、 VolumeDriver という行に移動すると、ドライバー名が変更されていることがわかります。

ドライバー名が変更されました

ボリュームを作成する

ボリュームは、 docker コマンドを使用して事前に作成できます。 このコマンドについて詳しく学びましょう。

構文

docker volume create –-name=volumename –-opt options

オプション

  • name -これは作成する必要があるボリュームの名前です。
  • opt -これらは、ボリュームの作成中に提供できるオプションです。

戻り値

このコマンドは、作成されたボリュームの名前を出力します。

sudo docker volume create –-name = demo –opt o = size = 100m

上記のコマンドでは、サイズが100MBで、名前がdemoのボリュームを作成しています。

出力

上記のコマンドの出力は以下に示されています-

ボリュームの作成

すべてのボリュームのリスト

  • dockerホスト*上のすべての* dockerボリューム*をリストすることもできます。 このコマンドの詳細は以下に記載されています-

構文

docker volume ls

オプション

None

戻り値

このコマンドは、* dockerホスト*上のすべてのボリュームを出力します。

sudo docker volume ls

出力

上記のコマンドの出力は以下に示されています-

すべてのボリューム出力のリスト

Docker-ネットワーキング

コンテナーが他のコンテナーやDockerホストとも通信できるように、Dockerはネットワークの側面を処理します。 Dockerホストで ifconfig を実行すると、Docker Ethernetアダプターが表示されます。 このアダプターは、DockerがDockerホストにインストールされるときに作成されます。

IFCONFIG

これは、DockerホストとLinuxホスト間のブリッジです。 次に、Dockerのネットワークに関連するいくつかのコマンドを見てみましょう。

すべてのDockerネットワークのリスト

このコマンドを使用して、ホスト上のDockerに関連付けられているすべてのネットワークをリストできます。

構文

docker network ls

オプション

None

戻り値

このコマンドは、Dockerホスト上のすべてのネットワークを出力します。

sudo docker network ls

出力

上記のコマンドの出力を以下に示します

Docker Networks

Dockerネットワークの検査

Dockerに関連付けられているネットワークの詳細を表示するには、Docker network inspect コマンドを使用できます。

構文

docker network inspect networkname

オプション

  • networkname -これは検査する必要があるネットワークの名前です。

戻り値

このコマンドは、ネットワークに関するすべての詳細を出力します。

sudo docker network inspect bridge

出力

上記のコマンドの出力は以下に示されています-

Dockerネットワークの検査

それでは、コンテナを実行して、ネットワークを再度検査するとどうなるか見てみましょう。 次のコマンドでUbuntuコンテナをスピンアップしましょう-

sudo docker run –it ubuntu:latest/bin/bash

ネットワークでコンテナを実行

これで、次のコマンドを使用してネットワーク名を調べると、コンテナがブリッジに接続されていることがわかります。

sudo docker network inspect bridge

ブリッジに接続されたコンテナ

独自の新しいネットワークを作成する

コンテナを起動する前にDockerでネットワークを作成できます。 これは、次のコマンドで行うことができます-

構文

docker network create –-driver drivername name

オプション

  • drivername -これは、ネットワークドライバーに使用される名前です。
  • name -これはネットワークに与えられた名前です。

戻り値

このコマンドは、新しいネットワークの長いIDを出力します。

sudo docker network create –-driver bridge new_nw

出力

上記のコマンドの出力は以下に示されています-

ロングID

これで、コンテナを起動するときに新しいネットワークを接続できます。 だから、次のコマンドでUbuntuコンテナをスピンアップしましょう-

sudo docker run –it –network=new_nw ubuntu:latest/bin/bash

新しいネットワーク

そして、次のコマンドを使用してネットワークを検査すると、コンテナがネットワークに接続されていることがわかります。

sudo docker network inspect new_nw

New NW

Docker-Node.jsの設定

Node.jsは、サーバーサイドアプリケーションの開発に使用されるJavaScriptフレームワークです。 これは、さまざまなオペレーティングシステムで実行するために開発されたオープンソースフレームワークです。 Node.jsは開発用の一般的なフレームワークであるため、DockerはNode.jsアプリケーションのサポートも確保しています。

Node.jsのDockerコンテナーを起動して実行するためのさまざまな手順を説明します。

  • ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すようにNode.jsの画像を検索および表示できます。 検索ボックスに「ノード」と入力し、検索結果に表示されるノード(公式)リンクをクリックするだけです。

Docker Hubからのプルイメージ

ステップ2 *-ノードのDocker *pull コマンドがDocker Hubのリポジトリの詳細に表示されます。

ドキュメント

ステップ3 *-Dockerホストで、上記のDocker *pull コマンドを使用して、Docker Hubから最新のノードイメージをダウンロードします。

最新のノード画像

*pull* が完了すると、次のステップに進むことができます。

プルが完了しました

ステップ4 *-Dockerホストで、 *vim エディターを使用してNode.jsサンプルファイルを1つ作成します。 このファイルでは、コマンドプロンプトに「HelloWorld」を表示する簡単なコマンドを追加します。

Vim Editor

Node.jsファイルで、次のステートメントを追加しましょう-

Console.log(‘Hello World’);

Node.jsで実行すると、「Hello World」フレーズが出力されます。

Hello World Phrase

ファイルを保存してから、次の手順に進んでください。

  • ステップ5 *-Node Dockerコンテナを使用してNode.jsスクリプトを実行するには、次のステートメントを実行する必要があります-
sudo docker run –it –rm –name = HelloWorld –v “$PWD”:/usr/src/app
   –w/usr/src/app node node HelloWorld.js

上記のコマンドについて次の点に注意する必要があります-

  • –rm オプションは、実行後にコンテナを削除するために使用されます。
  • 「HelloWorld」という名前のコンテナに名前を付けています。
  • /usr/src/app であるコンテナ内のボリュームを現在の現在の作業ディレクトリにマッピングすることに言及しています。 これは、ノードコンテナがDockerホストの作業ディレクトリにあるHelloWorld.jsスクリプトを取得するために行われます。
  • –w オプションは、Node.jsが使用する作業ディレクトリを指定するために使用されます。
  • 最初のノードオプションは、ノードイメージの実行を指定するために使用されます。
  • 2番目のノードオプションは、ノードコンテナでノードコマンドを実行することを示すために使用されます。
  • 最後に、スクリプトの名前に言及します。

その後、次の出力を取得します。 出力から、Nodeコンテナがコンテナとして実行され、HelloWorld.jsスクリプトを実行したことが明確にわかります。

HelloWorld JSスクリプト

Docker-MongoDBの設定

MongoDBは、現代の多くのWebアプリケーションで使用されている有名なドキュメント指向データベースです。 MongoDBは開発用の一般的なデータベースであるため、DockerはMongoDBのサポートも確保しています。

これで、MongoDBのDockerコンテナーを起動して実行するためのさまざまな手順が表示されます。

  • ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すように、Mongoの画像を検索および表示できます。 検索ボックスにMongoと入力し、検索結果に表示されるMongo(公式)リンクをクリックするだけです。

Mongo DB

ステップ2 *-Docker Hubのリポジトリの詳細にMongoのDocker *pull コマンドが表示されます。

MONGOのDockerプルコマンド

ステップ3 *-Dockerホストで、上記のDocker *pull コマンドを使用して、Docker Hubから最新のMongoイメージをダウンロードします。

最新のモンゴ画像

プルコマンドMongoDB

  • ステップ4 *-Mongoのイメージができたので、最初にMongoDBのインスタンスとなるMongoDBコンテナーを実行しましょう。 このために、次のコマンドを発行します-
sudo docker run -it -d mongo

上記のコマンドについては、次の点に注意することができます-

  • –it オプションは、コンテナを対話モードで実行するために使用されます。
  • –d オプションは、コンテナをデーモンプロセスとして実行するために使用されます。
  • 最後に、Mongoイメージからコンテナを作成しています。

その後、 docker ps コマンドを発行して、実行中のコンテナを確認できます-

MongoDB Container

次の点に注意してください-

  • コンテナの名前は tender_poitras です。 コンテナをスピンアップするとコンテナの名前が変化し続けるため、この名前は異なります。 ただし、起動したコンテナをメモしてください。
  • 次に、実行中のポート番号にも注目してください。 27017のTCPポートでリッスンしています。
  • ステップ5 *-次に、MongoDBデータベースへの接続に使用されるクライアントとして機能する別のコンテナをスピンアップします。 これのために次のコマンドを発行しましょう-
sudo docker run –it –link=tender_poitras:mongo mongo/bin/bash

上記のコマンドについては、次の点に注意することができます-

  • –it オプションは、コンテナを対話モードで実行するために使用されます。
  • 現在、新しいコンテナを既に起動されているMongoDBサーバーコンテナにリンクしています。 ここでは、すでに起動されているコンテナの名前を記載する必要があります。
  • 次に、Mongoコンテナーをクライアントとして起動し、新しいコンテナーで bin/bash シェルを実行することを指定します。

Bin Bash

これで、新しいコンテナになります。

ステップ6 *-新しいコンテナで *env コマンドを実行して、MongoDBサーバーコンテナに接続する方法の詳細を確認します。

ENV Container New Command

  • ステップ6 *-次に、クライアントコンテナからMongoDBサーバーに接続します。 私たちは次のコマンドを介してこれを行うことができます-
mongo 172.17.0.2:27017

上記のコマンドについて、次の点に注意する必要があります

  • mongo コマンドは、MongoDBデータベースへの接続に使用されるクライアント mongo コマンドです。
  • IPおよびポート番号は、 env コマンドを使用したときに取得されるものです。

コマンドを実行すると、MongoDBデータベースに接続されます。

MongoDBデータベース

その後、コマンドプロンプトで任意のMongoDBコマンドを実行できます。 この例では、次のコマンドを実行しています-

use demo

このコマンドは、データベース名 demo に切り替えるために使用されるMongoDBコマンドです。 データベースが利用できない場合、作成されます。

データベース名DEMO

これで、クライアントとサーバーのMongoDBコンテナーが正常に作成されました。

Docker-NGINXの設定

NGINXは、サーバーサイドアプリケーションの開発に使用される一般的な軽量のWebアプリケーションです。 これは、さまざまなオペレーティングシステムで実行するために開発されたオープンソースのWebサーバーです。 nginx は開発用の一般的なWebサーバーであるため、Dockerは nginx をサポートしていることを確認しています。

これで、 nginx のDockerコンテナーを起動して実行するためのさまざまな手順が表示されます。

ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すように、 *nginx の画像を検索および表示できます。 検索ボックスにnginxと入力し、検索結果に表示される nginx (公式)リンクをクリックするだけです。

NGINX公式リンク

ステップ2 *-Docker Hubのリポジトリの詳細に *nginx のDocker pull コマンドが表示されます。

NGINXのDocker Pullコマンド

ステップ3 *-Dockerホストで、上記のDocker *pull コマンドを使用して、Docker Hubから最新のnginxイメージをダウンロードします。

NGINX Image

ステップ4 *-次のコマンドで *nginx コンテナを実行してみましょう。

sudo docker run –p 8080:80 –d nginx

ポート80である nginx サーバーのポートを、Dockerホストのポート8080に公開しています。

NGINXサーバー

コマンドを実行すると、URL http://dockerhost:8080 を参照すると、次の出力が表示されます。 これは、 nginx コンテナーが稼働中であることを示しています。

NGINX Container

ステップ5 *- *ngnix コンテナで単純なWebページをホストできる別の例を見てみましょう。 この例では、単純な HelloWorldl ファイルを作成し、それを nginx コンテナーでホストします。

まず、 HelloWorldl というHTMLファイルを作成しましょう

HTMLファイル

HTMLファイルにHello Worldの簡単な行を追加しましょう。

Simple Line Hello World

次に、次のDockerコマンドを実行します。

sudo docker run –p 8080:80 –v
   “$PWD”:/usr/share/nginx/html:ro –d nginx

上記のコマンドについて次の点に注意する必要があります-

  • ポート80である nginx サーバーのポートを、Dockerホストのポート8080に公開しています。
  • 次に、コンテナ上のボリュームを /usr/share/nginx/html に現在の作業ディレクトリにアタッチします。 ここにHelloWorldlファイルが保存されます。

作業ディレクトリ

ここで、URL http://dockerhost:8080/HelloWorldl を参照すると、期待どおりに次の出力が得られます-

期待される出力

Docker-ツールボックス

入門の章では、WindowsでのDockerツールボックスのインストールについて説明しました。 Dockerツールボックスは、DockerコンテナをWindowsおよびMacOSで実行できるように開発されています。 Windows上のツールボックスのサイトはhttps://docs.docker.com/docker-for-windows/です

Windowsのツールボックス

Windowsの場合、Hyper-Vを有効にしたWindows 10またはWindows Server 2016が必要です。

ツールボックスは、次のコンポーネントで構成されています-

  • Docker Engine -これは、Dockerコンテナの実行に使用されるベースエンジンまたはDockerデーモンとして使用されます。
  • Docker Machine -Dockerマシンコマンドの実行用。
  • * Docker Composeコマンドを実行するための Docker Compose
  • キネマティック-これは、WindowsおよびMac OS用に構築されたDocker GUIです。
  • Oracle virtualbox

次に、Dockerツールボックスで可能なさまざまなタイプのアクティビティについて説明します。

Powershellで実行する

Windows 10のDockerツールボックスを使用すると、 powershell からDockerコマンドを実行できます。 WindowsでPowerShellを開いてDockerバージョンのコマンドを入力すると、インストールされているDockerバージョンに関する必要な詳細がすべて取得されます。

Windows Powershell

イメージのプルとコンテナの実行

Linuxの場合と同様に、Docker Hubからイメージをプルし、Powershellでコンテナーを実行することもできます。 次の例は、Ubuntuイメージのダウンロードとイメージからのコンテナーの実行を簡単に示しています。

最初のステップは、Docker pull コマンドを使用して、UbuntuイメージをDocker Hubからプルすることです。

画像のプル

次のステップは、次の run コマンドを使用してDockerイメージを実行することです-

docker run –it ubuntu/bin/bash

このコマンドはLinuxの場合と同じであることがわかります。

同じコマンド

カイトマティック

これは、Windows上のDockerに相当するGUIです。 このGUIを開くには、タスクバーに移動し、Dockerアイコンで右クリックして、Kitematicを開くことを選択します。

Kitematic

Kitematic GUIをダウンロードするよう求められます。 ダウンロードしたら、コンテンツを解凍するだけです。 Kitematic.exe というファイルがあります。 このexeファイルをダブルクリックして、GUIインターフェイスを開きます。

次に、Docker Hubにログインし、GUIから入力するように要求されます。 必要なユーザー名とパスワードを入力して、[ログイン]ボタンをクリックするだけです。

Docker Hubに接続

ログインすると、インターフェースの左側でシステムにダウンロードされたすべての画像を見ることができます。

ダウンロードされた画像

右側には、Docker Hubで利用可能なすべての画像があります。

Kitematicを使用してDocker Hubからノードイメージをダウンロードする方法を理解するための例を見てみましょう。

  • ステップ1 *-検索条件にノードのキーワードを入力します。

ノードのキーワード

  • ステップ2 *-公式のノードイメージで[作成]ボタンをクリックします。 その後、ダウンロード中の画像が表示されます。

ボタンの作成

イメージがダウンロードされると、ノードコンテナの実行が開始されます。

ノードコンテナ

  • ステップ3 *-*設定*タブに移動すると、以下に示すように、さらに詳細な設定オプションにドリルダウンできます。
  • 一般設定-このタブでは、コンテナに名前を付け、パス設定を変更し、コンテナを削除できます。

一般設定

  • ポート-ここでは、さまざまなポートマッピングを確認できます。 必要に応じて、独自のポートマッピングを作成できます。

ポート

  • ボリューム-ここでは、さまざまなボリュームマッピングを確認できます。

ボリューム

  • 詳細-コンテナの詳細設定が含まれています。

詳細設定

Docker-ASP.Netの設定

ASP.Netは、サーバー側アプリケーションの開発用にMicrosoftが提供する標準のWeb開発フレームワークです。 ASP.Netは開発に長い間使用されてきたため、DockerはASP.Netをサポートしていることを確認しています。

この章では、ASP.NetのDockerコンテナーを起動して実行するためのさまざまな手順を説明します。

前提条件

ASP.Netを実行するには、最初に次の手順を実行する必要があります。

  • ステップ1 *-これはWindowsシステムでのみ実行できるため、最初にWindows 10またはWindow Server 2016を使用していることを確認する必要があります。
  • ステップ2 *-次に、Hyper-VがWindowsシステムにインストールされていることを確認します。 Hyper–Vとコンテナをインストールするには、「Windowsの機能を有効または無効にする」に進みます。 次に、Hyper-Vオプションとコンテナがオンになっていることを確認し、[OK]ボタンをクリックします。

Windowsの機能

この操作の後、システムの再起動が必要になる場合があります。

ステップ3 *-次に、次のPowershellコマンドを使用してDockerの *1.13.0rc4 バージョンをインストールする必要があります。 次のコマンドはこれをダウンロードし、一時的な場所に保存します。

Invoke-WebRequest "https://test.docker.com/builds/Windows/x86_64/docker-1.13.0-
   rc4.zip" -OutFile "$env:TEMP\docker-1.13.0-rc4.zip" –UseBasicParsing

宛先パス

ステップ4 *-次に、次の *powershell コマンドを使用してアーカイブを展開する必要があります。

Expand-Archive -Path "$env:TEMP\docker-1.13.0-rc4.zip" -DestinationPath $env:ProgramFiles

アーカイブを展開

ステップ5 *-次に、次の *powershell コマンドを使用して、Dockerファイルを環境変数に追加する必要があります。

$env:path += ";$env:ProgramFiles\Docker"

ステップ6 *-次に、次の *powershell コマンドを使用してDocker Daemonサービスを登録する必要があります。

dockerd --register-service

ステップ7 *-最後に、次のコマンドを使用して dockerデーモン*を起動できます。

Start-Service Docker
*powershell* で *docker version* コマンドを使用して、* dockerデーモン*が動作していることを確認します

Dockerバージョン

ASP.Netコンテナーのインストール

ASP.Netコンテナーのインストール方法を見てみましょう。

ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すように、 *Microsoft/aspnet の画像を検索して表示できます。 検索ボックスに asp と入力し、検索結果に表示されるMicrosoft/aspnetリンクをクリックするだけです。

Microsoft/ASPNET

ステップ2 *-Docker Hubのリポジトリの詳細に、ASP.NetのDocker *pull コマンドが表示されます。

ASPNETのDockerプルコマンド

ステップ3 *-Dockerホストに移動し、microsoft/aspnetイメージに対してDocker *pull コマンドを実行します。 画像はかなり大きく、4.2 GBに近いことに注意してください。

Microsoft/Aspnet Image

  • ステップ4 *-次の場所https://github.com/Microsoft/aspnet-dockerに移動して、Gitリポジトリ全体をダウンロードします。

ステップ5 *-Cドライブに *App というフォルダーを作成します。 次に、内容を 4.6.2/sample フォルダーからCドライブにコピーします。 サンプルディレクトリのDockerファイルに移動し、次のコマンドを発行します-

docker build –t aspnet-site-new –build-arg site_root=/

上記のコマンドについて次の点に注意する必要があります-

  • Dockerファイルから aspnet-site-new という新しいイメージを作成します。
  • ルートパスはlocalpathフォルダーに設定されます。

ローカルパスフォルダー

  • ステップ6 *-コンテナを実行します。 それは次のコマンドを使用して行うことができます-
docker run –d –p 8000:80 –name my-running-site-new aspnet-site-new

新しいASPNETサイト

ステップ7 *-DockerコンテナーでIISを実行します。 DockerコンテナーのIPアドレスを見つけるには、以下に示すようにDocker *inspect コマンドを発行できます。

Dockerコンテナで実行されているIIS

Docker-クラウド

Docker Cloudは、Dockerが提供するサービスで、次の操作を実行できます-

  • ノード-Docker CloudをAzureやAWSなどの既存のクラウドプロバイダーに接続して、これらの環境でコンテナーを起動できます。
  • クラウドリポジトリ-独自のリポジトリを保存できる場所を提供します。
  • 継続的統合- Github と接続し、継続的統合パイプラインを構築します。
  • アプリケーションの展開-インフラストラクチャとコンテナを展開および拡張します。
  • 連続展開-展開を自動化できます。

入門

次のリンクからDocker Cloudの使用を開始できます-https://cloud.docker.com/

Docker Cloud

ログインすると、次の基本的なインターフェースが提供されます-

基本インターフェイス

クラウドプロバイダーへの接続

最初のステップは、既存のクラウドプロバイダーに接続することです。 次の手順は、Amazon Cloudプロバイダーと接続する方法を示します。

ステップ1 *-最初のステップは、正しいAWSキーがあることを確認することです。 これは、 *aws コンソールから取得できます。 次のリンクを使用して aws アカウントにログインします-https://aws.amazon.com/console/

AWS Management Console

  • ステップ2 *-ログインしたら、[セキュリティ認証情報]セクションに移動します。 Docker Hubから使用されるアクセスキーを書き留めます。

セキュリティ資格情報セクション

ステップ3 *-次に、DockerがEC2インスタンスを表示できるようにするポリシーを *aws で作成する必要があります。 aws のプロファイルセクションに移動します。 [ポリシーの作成]ボタンをクリックします。

ポリシーの作成

ステップ4 *-[独自のポリシーの作成]をクリックし、ポリシー名を *dockercloudpolicy として指定し、次に示すポリシー定義を指定します。

{
   "Version": "2012-10-17",
   "Statement": [ {
      "Action": [
         "ec2:*",
         "iam:ListInstanceProfiles"
      ],
      "Effect": "Allow",
      "Resource": "*"
   } ]
}

レビューポリシー

次に、 Create Policy ボタンをクリックします

ステップ5 *-次に、AWSでノードをスピンアップするためにDockerによって使用される*ロール*を作成する必要があります。 このためには、AWSの *Roles セクションに移動し、 Create New Role オプションをクリックします。

新しい役割の作成

ステップ6 *-ロールの名前を *dockercloud-role として指定します。

次のステップ

  • ステップ7 *-次の画面で、「クロスアカウントアクセスの役割」に進み、「アカウントとサードパーティAWSアカウント間のアクセスを提供する」を選択します。

役割タイプの選択

  • ステップ8 *-次の画面で、次の詳細を入力します-
  • [アカウントID]フィールドに、Docker CloudサービスのID 689684103426を入力します。
  • [外部ID]フィールドに、Docker Cloudユーザー名を入力します。

アカウント外部​​ID

  • ステップ9 *-次に、*次のステップ*ボタンをクリックし、次の画面で、前のステップで作成されたポリシーを添付します。

ポリシーの添付

ステップ10 *-最後に、ロールが作成された最後の画面で、作成された *arn ロールを必ずコピーしてください。

arn:aws:iam::085363624145:role/dockercloud-role

ロール名ARNの作成

ステップ11 *- *Docker Cloud に戻り、 Cloud Providers を選択して、Amazon Web Servicesの横にある plug symbol をクリックします。

クラウドプロバイダー

*arn* ロールを入力し、 *Save* ボタンをクリックします。

AWSクレデンシャル

保存すると、AWSとの統合が完了します。

AWSとの統合

ノードのセットアップ

AWSとの統合が完了したら、次のステップはノードのセットアップです。 Docker Cloudの[ノード]セクションに移動します。 ノードのセットアップでは、最初にノードクラスターが自動的にセットアップされることに注意してください。

  • ステップ1 *-Docker Cloudの[ノード]セクションに移動します。

ノードセクション

  • ステップ2 *-次に、AWSでセットアップされるノードの詳細を指定できます。

ノードクラスターウィザード

次に、画面の下部に表示される起動ノードクラスターをクリックします。 ノードがデプロイされると、ノードクラスター画面に通知が表示されます。

アクション

サービスの展開

ノードをデプロイした後の次のステップは、サービスをデプロイすることです。 これを行うには、次の手順を実行する必要があります。

ステップ1 *-Docker Cloudの Servicesセクション*に移動します。 [作成]ボタンをクリックします

サービスセクション

ステップ2 *-必要なサービスを選択します。 ここでは、 *mongo を選択します。

モンゴ

ステップ3 *-次の画面で、 *Create&Deploy オプションを選択します。 これにより、ノードクラスターに Mongo コンテナーのデプロイが開始されます。

デプロイの作成

デプロイすると、実行状態のコンテナを確認できます。

実行状態のコンテナー

Docker-ロギング

Dockerには、問題が発生した時点でデバッグするために使用できるロギングメカニズムがあります。 *デーモンレベル*および*コンテナレベル*でのロギングがあります。 さまざまなレベルのログを見てみましょう。

デーモンロギング

デーモンロギングレベルでは、4つのレベルのロギングが利用可能です-

  • デバッグ-デーモンプロセスによって処理されるすべての可能な情報の詳細。
  • 情報-すべてのエラーの詳細+デーモンプロセスによって処理される情報。
  • エラー-デーモンプロセスによって処理されたすべてのエラーの詳細。
  • 致命的-それはデーモンプロセスによって処理されるすべての致命的エラーのみを詳述します。

次の手順を実行して、ロギングを有効にする方法を学習します。

ステップ1 *-最初に、 dockerデーモンプロセスが既に実行されている場合は停止する必要があります。 それは次のコマンドを使用して行うことができます-

sudo service docker stop

Docker Daemon Process

ステップ2 *-次に、 dockerデーモンプロセス*を起動する必要があります。 ただし、今回は、ログオプションを指定するために –l パラメーターを追加する必要があります。 したがって、* dockerデーモンプロセス*を起動するときに次のコマンドを発行します。

sudo dockerd –l debug &

上記のコマンドについて次の点に注意する必要があります-

  • dockerd は、* dockerデーモンプロセス*の実行可能ファイルです。
  • –l オプションは、ログレベルを指定するために使用されます。 私たちの場合、これをデバッグとして入れています
  • *&*は、ロギングが有効になった後にコマンドプロンプトに戻るために使用されます。

ポイント

ロギングを使用してDockerプロセスを開始すると、コンソールに送信されている Debug Logs も表示されます。

デバッグログ

これで、 docker images などのDockerコマンドを実行すると、デバッグ情報もコンソールに送信されます。

Docker Images Logging

コンテナロギング

ロギングはコンテナレベルでも利用できます。 したがって、この例では、まずUbuntuコンテナーをスピンアップします。 次のコマンドを使用して実行できます。

sudo docker run –it ubuntu/bin/bash

コンテナロギング

これで、* docker logコマンド*を使用して、コンテナのログを表示できます。

構文

Docker logs containerID

パラメーター

  • containerID -これは、ログを表示する必要があるコンテナのIDです。

Dockerホストで、次のコマンドを発行しましょう。 その前に、コンテナ内でいくつかのコマンドを発行できます。

sudo docker logs 6bfb1271fcdd

出力

コンテナロギング出力

出力から、コンテナで実行されたコマンドがログに表示されていることがわかります。

Docker-作成

*Docker Compose* は、複数のコンテナを単一のサービスとして実行するために使用されます。 たとえば、NGNIXとMySQLを必要とするアプリケーションがある場合、それぞれを個別に起動する必要なく、両方のコンテナをサービスとして起動する1つのファイルを作成できます。

この章では、Docker Composeを開始する方法について説明します。 次に、Docker Composeを使用して、MySQLとNGNIXを使用して簡単なサービスを実行する方法について説明します。

Docker Compose─インストール

Docker Composeを起動して実行するには、次の手順に従う必要があります。

ステップ1 *-次のコマンドを使用して *github から必要なファイルをダウンロードします-

curl -L "https://github.com/docker/compose/releases/download/1.10.0-rc2/dockercompose
   -$(uname -s) -$(uname -m)" -o/home/demo/docker-compose

上記のコマンドは、この記事の執筆時点では 1.10.0-rc2 であるDocker Composeの最新バージョンをダウンロードします。 その後、ディレクトリ /home/demo/ に保存します。

Docker Compose

  • ステップ2 *-次に、次のコマンドを使用して、ダウンロードしたDocker Composeファイルに*実行権限*を提供する必要があります-
chmod +x/home/demo/docker-compose

実行権限

その後、次のコマンドを使用して compose バージョンを確認できます。

構文

docker-compose version

パラメーター

  • version -これは、 Docker Compose のバージョンの詳細が必要であることを指定するために使用されます。

出力

Docker Composeのバージョンの詳細が表示されます。

次の例は、 docker-compose バージョンを取得する方法を示しています。

sudo ./docker-compose -version

出力

その後、次の出力を取得します-

Docker Composeインストール

初めてのDocker-Composeファイルの作成

それでは、最初のDocker Composeファイルを作成しましょう。 すべてのDocker ComposeファイルはYAMLファイルです。 vimエディターを使用して作成できます。 したがって、次のコマンドを実行して compose ファイルを作成します-

sudo vim docker-compose.yml

ファイルの作成

このファイルのさまざまな詳細を詳しく見てみましょう-

  • database および web キーワードは、2つの別個のサービスを定義するために使用されます。 1つは mysql データベースを実行し、もう1つは nginx Webサーバーになります。
  • image キーワードは、 mysql および nginx コンテナの dockerhub からのイメージを指定するために使用されます
  • データベースでは、portsキーワードを使用して、 mysql に公開する必要があるポートを示しています。
  • そして、 mysql の実行に必要な mysql の環境変数も指定します。

次のコマンドを使用してDocker Composeファイルを実行しましょう-

sudo ./docker-compose up

このコマンドは、ローカルディレクトリにある docker-compose.yml ファイルを取得し、コンテナの構築を開始します。

Docker Compose YML

実行されると、すべてのイメージのダウンロードが開始され、コンテナが自動的に開始されます。

ダウンロードの開始

そして、 docker ps を実行すると、コンテナーが実際に稼働していることがわかります。

Docker Compose Container

Docker-継続的インテグレーション

Dockerには、多くの継続的統合ツールとの統合があり、 Jenkins として知られる一般的なCIツールも含まれています。 Jenkins内には、コンテナの操作に使用できるプラグインが用意されています。 それでは、Jenkinsツールで利用可能なDockerプラグインを簡単に見てみましょう。

手順を追って説明し、JenkinsでDockerコンテナで利用できるものを見てみましょう。

ステップ1 *-Jenkinsダッシュボードに移動して、 Jenkinsの管理*をクリックします。

ジェンキンスの管理

  • ステップ2 *-*プラグインの管理*に移動します。

プラグインの管理

ステップ3 *-Dockerプラグインを検索します。 Dockerプラグインを選択し、*インストール *再起動なし*ボタンをクリックします。

再起動ボタンなしでインストール

ステップ4 *-インストールが完了したら、Jenkinsダッシュボードのジョブに移動します。 この例では、 *Demo というジョブがあります。

デモ

  • ステップ5 *-ジョブでは、ビルドステップに移動すると、コンテナを開始および停止するオプションが表示されます。

ビルドステップの追加

  • ステップ6 *-簡単な例として、ビルドの完了時にコンテナを停止する追加オプションを選択できます。 次に、[保存]ボタンをクリックします。

すべてのコンテナを停止

それでは、Jenkinsでジョブを実行してください。 コンソール出力で、すべてのコンテナを停止するコマンドが実行されたことを確認できます。

コンソール出力

Docker-Kubernetesアーキテクチャ

Kubernetesは、Dockerコンテナのオーケストレーションフレームワークであり、コンテナをサービスとして外部に公開するのに役立ちます。 たとえば、2つのサービスを使用できます。1つのサービスには nginx および mongoDB が含まれ、別のサービスには nginx および redis が含まれます。 各サービスには、他のアプリケーションから接続できるIPまたはサービスポイントを設定できます。 その後、Kubernetesを使用してこれらのサービスを管理します。

次の図は、アーキテクチャの観点からKubernetesがどのように機能するかを単純な形式で示しています。

Kubernetes Architecture

*minion* は、すべてのサービスが実行されるノードです。 一度に多くのミニオンを実行できます。 各ミニオンは1つ以上のPODをホストします。 各 *POD* は、サービスをホストするようなものです。 各PODにはDockerコンテナーが含まれます。 各PODは、異なるDockerコンテナのセットをホストできます。 次に、プロキシを使用して、これらのサービスの外部への公開を制御します。

Kubernetesのアーキテクチャにはいくつかのコンポーネントがあります。 各コンポーネントの役割については、以下で説明します&mius;

  • etcd -このコンポーネントは、共有構成*および*サービスディスカバリ*の保存に使用される、可用性の高い*キー値*ストアです。 ここで、さまざまなアプリケーションが discoveryサービス*を介してサービスに接続できます。
  • Flannel -これは、コンテナに必要なバックエンドネットワークです。
  • kube-apiserver -これは、Dockerコンテナを調整するために使用できるAPIです。
  • kube-controller-manager -これは* Kubernetesサービス*を制御するために使用されます。
  • kube-scheduler -これは、ホスト上のコンテナをスケジュールするために使用されます。
  • Kubelet -これは、* manifestファイル*を介してコンテナの起動を制御するために使用されます。
  • kube-proxy -これは、ネットワークプロキシサービスを外部に提供するために使用されます。

Docker-Kubernetesの動作

この章では、 kubeadm を使用して Kubenetes をインストールする方法について説明します。 これは、Kubernetesのインストールに役立つツールです。 ステップバイステップでKubernetesをインストールする方法を学びましょう。

ステップ1 *-作業している Ubuntuサーバーのバージョン*が 16.04 であることを確認します。

ステップ2 *- *ssh ログインに使用できる ssh キーを生成してください。 これを行うには、次のコマンドを使用します。

ssh-keygen

これにより、以下に示すように home folder にキーが生成されます。

ホームフォルダ

ステップ3 *-次に、お持ちのUbuntuのバージョンに応じて、 Kubernetesを検出できるように、* aptパッケージマネージャー*の docker.list に関連サイトを追加する必要があります。 kubernetes サイトからパッケージ*をダウンロードし、それに応じてダウンロードします。

次のコマンドを使用して実行できます。

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo "deb http://apt.kubernetes.io/kubernetes-xenial main” | sudo tee/etc/apt/sources.list.d/docker.list
  • ステップ4 *-すべてのパッケージがUbuntuサーバーにダウンロードされるように、apt-get更新を発行します。

APT発行更新を取得

  • ステップ5 *-前の章で説明したように、Dockerパッケージをインストールします。

ステップ6 *-次のパッケージをインストールして、 *kubernetes をインストールします-

apt-get install –y kubelet kubeadm kubectl kubernetes-cni

Kubenetesのインストール

Dockerパッケージ

ステップ7 *-すべての *kubernetes パッケージがダウンロードされたら、次のコマンドを使用してkubernetesコントローラーを起動します-

kubeadm init

kubernetesパッケージ

完了すると、マスターが稼働中であり、ノードがクラスターに参加できることを示す成功メッセージが表示されます。