Docker-quick-guide
Docker-概要
Dockerはコンテナー管理サービスです。 Dockerのキーワードは、 develop、ship 、 run どこでもです。 Dockerの全体的なアイデアは、開発者がアプリケーションを簡単に開発し、コンテナに入れて、どこにでも展開できるようにすることです。
Dockerの最初のリリースは2013年3月であり、それ以来、特にアジャイルベースのプロジェクトに直面して、現代世界の開発の流行語となっています。
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
- ステップ4 *-次のステップは、新しいGPGキーを追加することです。 このキーは、Dockerに必要なパッケージをダウンロードするときにすべてのデータが暗号化されるようにするために必要です。
次のコマンドは、IDが58118E89F3A912897C070ADBF76221572C52609Dのキーを keyserver hkp://ha.pool.sks-keyservers.net:80からダウンロードし、 adv キーチェーンに追加します。 この特定のキーは、必要なDockerパッケージをダウンロードするために必要であることに注意してください。
ステップ5 *-次に、使用しているUbuntuのバージョンに応じて、関連するサイトを aptパッケージマネージャー*の docker.list に追加して、Dockerパッケージを検出できるようにする必要があります。 Dockerサイトからダウンロードし、それに応じてダウンロードします。
- Precise 12.04(LTS)─deb https://apt.dockerproject.org/repoubuntu-precise main
- Trusty 14.04(LTS)─deb https://apt.dockerproject.org/repo/ubuntu-trusty main
- Wily 15.10─deb https://apt.dockerproject.org/repo ubuntu-wily main
- Xenial 16.04(LTS)-https://apt.dockerproject.org/repo/[https://apt.dockerproject.org/repo] ubuntu-xenialメイン
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
ステップ6 *-次に、 apt-get updateコマンド*を発行して、Ubuntuシステム上のパッケージを更新します。
ステップ7 *-パッケージマネージャーが正しいリポジトリを指していることを確認する場合は、 apt-cacheコマンド*を発行して実行できます。
apt-cache policy docker-engine
出力では、https://apt.dockerproject.org/repo/%20 [https://apt.dockerproject.org/repo/]へのリンクを取得します。
ステップ8 *- apt-get updateコマンド*を発行して、ローカルシステム上のすべてのパッケージが最新であることを確認します。
ステップ9 *-Ubuntu Trusty、Wily、およびXenialの場合、linux-image-extra- *カーネルパッケージをインストールする必要があります。これにより、 aufsストレージドライバー*を使用できるようになります。 このドライバーは、Dockerの新しいバージョンで使用されます。
次のコマンドを使用して実行できます。
sudo apt-get install linux-image-extra-$(uname -r)
linux-image-extra-virtual
- ステップ10 *-最後のステップはDockerをインストールすることです。次のコマンドでこれを行うことができます-
sudo apt-get install –y docker-engine
ここでは、 apt-get はインストールオプションを使用してDocker WebサイトからDockerエンジンイメージをダウンロードし、Dockerをインストールします。
Docker-engineは、Ubuntuベースのシステム向けのDocker Corporationの公式パッケージです。
次のセクションでは、インストールされたDockerのバージョンを確認する方法について説明します。
Dockerバージョン
実行中のDockerのバージョンを確認するには、次のコマンドを発行できます-
構文
docker version
オプション
- version -DockerコマンドがインストールされているDockerバージョンを返すようにするために使用されます。
戻り値
出力は、システムにインストールされているDockerバージョンのさまざまな詳細を提供します。
例
sudo docker version
出力
上記のプログラムを実行すると、次の結果が得られます-
Docker情報
システムで実行されているDockerの詳細を確認するには、次のコマンドを発行できます-
構文
docker info
オプション
- info -DockerコマンドがインストールされたDockerサービスに関する詳細情報を返すことを保証するために使用されます。
戻り値
出力は、システムにインストールされているDockerのさまざまな詳細を提供します-
- コンテナ数
- 画像の数
- Dockerが使用するストレージドライバー
- Dockerが使用するルートディレクトリ
- Dockerが使用する実行ドライバー
例
sudo docker info
出力
上記のコマンドを実行すると、次の結果が得られます-
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/からダウンロードできます。
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-インストール
各製品のインストールを見ていきましょう。
Docker for Windows
インストーラーをダウンロードしたら、それをダブルクリックしてインストーラーを起動し、以下の手順に従います。
- ステップ1 *-契約条件をクリックしてから、インストールボタンをクリックして、インストールを続行します。
- ステップ2 *-完了したら、[完了]ボタンをクリックしてインストールを完了します。
Dockerツールボックス
インストーラーをダウンロードしたら、それをダブルクリックしてインストーラーを起動し、以下の手順に従います。
- ステップ1 *-開始画面で[次へ]ボタンをクリックします。
- ステップ2 *-次の画面でデフォルトの場所を保持し、[次へ]ボタンをクリックします。
- ステップ3 *-デフォルトのコンポーネントを保持し、[次へ]ボタンをクリックして続行します。
- ステップ4 *-追加のタスクをそのままにして、[次へ]ボタンをクリックします。
- ステップ5 *-最後の画面で、[インストール]ボタンをクリックします。
Docker Toolboxの使用
次に、WindowsでDockerコンテナを操作するためにDocker Toolboxを使用する方法を見てみましょう。 最初のステップは、Dockerツールボックスのインストールの実行時にデスクトップにショートカットが作成されるDocker Toolboxアプリケーションを起動することです。
次に、Dockerツールボックスの起動時に実行される構成が表示されます。
完了すると、Dockerが構成および起動されます。 Dockerのインタラクティブシェルが表示されます。
Dockerが正常に実行されることをテストするには、Docker * runコマンド*を使用して、単純な* HelloWorld Dockerコンテナー*をダウンロードして実行します。
Docker *実行コマンド*の動作は以下のとおりです-
docker run
このコマンドは、Dockerコンテナーでコマンドを実行するために使用されます。
構文
docker run image
オプション
- 画像-これは、コンテナを実行するために使用される画像の名前です。
戻り値
出力は、目的のコンテナでコマンドを実行します。
例
sudo docker run hello-world
このコマンドは、 hello-world イメージがまだ存在しない場合はダウンロードし、 hello-world をコンテナーとして実行します。
出力
上記のコマンドを実行すると、次の結果が得られます-
Windows上でUbuntu OSを実行したい場合は、次のコマンドを使用してUbuntuイメージをダウンロードできます-
Docker run –it Ubuntu bash
ここでは、 – it オプションを使用して、対話モードでコマンドを実行するようにDockerに指示しています。
出力では、Ubuntuイメージがダウンロードされ、実行されていることがわかります。その後、Ubuntuコンテナーにrootユーザーとしてログインします。
Docker-ハブ
Docker Hubはクラウド上のレジストリサービスであり、他のコミュニティによって構築されたDockerイメージをダウンロードできます。 独自のDockerビルド画像をDockerハブにアップロードすることもできます。 この章では、DockerハブからJenkins Dockerイメージをダウンロードして使用する方法について説明します。
Dockerハブの公式サイトは-https://www.docker.com/community-edition#/add_onsです
- ステップ1 *-まず、Dockerハブで簡単なサインアップを行う必要があります。
- ステップ2 *-サインアップすると、Docker Hubにログインします。
- ステップ3 *-次に、Jenkinsの画像を参照して見つけます。
ステップ4 *-同じページを下にスクロールすると、Docker *pull コマンドが表示されます。 これは、ローカルのUbuntuサーバーにJenkinsイメージをダウンロードするために使用されます。
- ステップ5 *-次に、Ubuntuサーバーに移動して、次のコマンドを実行します-
sudo docker pull jenkins
ジェンキンスを実行するには、次のコマンドを実行する必要があります-
sudo docker run -p 8080:8080 -p 50000:50000 jenkins
上記の sudo コマンドに関する次の点に注意してください-
- sudo コマンドを使用して、rootアクセスで実行されるようにします。
- ここで、 jenkins は、DockerハブからダウンロードしてUbuntuマシンにインストールするイメージの名前です。
- -p は、内部Dockerイメージのポート番号をメインのUbuntuサーバーにマップして、それに応じてコンテナーにアクセスできるようにするために使用されます。
その後、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
出力
上記のコマンドを実行すると、次の結果が生成されます-
上記の出力から、サーバーには* centos、newcentos、および *jenkins の3つのイメージがあることがわかります。 各画像には次の属性があります-
- TAG -これは画像に論理的にタグを付けるために使用されます。
- *画像ID *-これは画像を一意に識別するために使用されます。
- *作成日-イメージが作成されてからの日数。
- 仮想サイズ-画像のサイズ。
Dockerイメージのダウンロード
画像は、Docker run コマンドを使用してDocker Hubからダウンロードできます。 これを行う方法を詳しく見てみましょう。
構文
次の構文は、Dockerコンテナーでコマンドを実行するために使用されます。
docker run image
オプション
- 画像-これは、コンテナを実行するために使用される画像の名前です。
戻り値
出力は、目的のコンテナでコマンドを実行します。
例
sudo docker run centos
このコマンドは、 centos イメージがまだ存在しない場合はダウンロードし、OSをコンテナーとして実行します。
出力
上記のコマンドを実行すると、次の結果が得られます-
ダウンロードしたCentOS Dockerイメージが表示されます。 これで、Docker images コマンドを実行してシステム上のイメージのリストを表示すると、 centos イメージも表示できるはずです。
Dockerイメージの削除
システム上のDockerイメージは、 docker rmi コマンドを使用して削除できます。 このコマンドをさらに詳しく見てみましょう。
docker rmi
このコマンドは、Dockerイメージを削除するために使用されます。
構文
docker rmi ImageID
オプション
- ImageID -これは削除する必要がある画像のIDです。
戻り値
出力は、削除されたイメージのイメージIDを提供します。
例
sudo docker rmi 7a86f8ffcb25
ここで、 7a86f8ffcb25 は newcentos イメージのイメージIDです。
出力
上記のコマンドを実行すると、次の結果が生成されます-
画像でさらにDockerコマンドを見てみましょう。
ドッカー画像-q
このコマンドは、画像の画像IDのみを返すために使用されます。
構文
docker images
オプション
- q -イメージIDのみを返すようにDockerコマンドに指示します。
戻り値
出力には、Dockerホスト上の画像の画像IDのみが表示されます。
例
sudo docker images -q
出力
上記のコマンドを実行すると、次の結果が生成されます-
ドッカー検査
このコマンドは、画像またはコンテナの詳細を表示するために使用されます。
構文
docker inspect Repository
オプション
- リポジトリ-これは画像の名前です。
戻り値
出力には、イメージに関する詳細情報が表示されます。
例
sudo docker inspect jenkins
出力
上記のコマンドを実行すると、次の結果が生成されます-
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 history ImageID
オプション
- ImageID -これは、それに対して実行されたすべてのコマンドを表示するイメージIDです。
戻り値
出力には、そのイメージに対して実行されたすべてのコマンドが表示されます。
例
sudo docker history centos
上記のコマンドは、 centos イメージに対して実行されたすべてのコマンドを表示します。
出力
上記のコマンドを実行すると、次の結果が生成されます-
Docker-コンテナーの操作
この章では、コンテナで何ができるかを詳しく調べます。
ドッカートップ
このコマンドを使用すると、コンテナ内の上位プロセスを確認できます。
構文
docker top ContainerID
オプション
- ContainerID -これは、トッププロセスを表示するコンテナIDです。
戻り値
出力には、コンテナ内の最上位プロセスが表示されます。
例
sudo docker top 9f215ed0b0d3
上記のコマンドは、コンテナ内の最上位プロセスを表示します。
出力
上記のコマンドを実行すると、次の結果が生成されます-
ドッカーストップ
このコマンドは、実行中のコンテナを停止するために使用されます。
構文
docker stop ContainerID
オプション
- ContainerID -これは、停止する必要があるコンテナIDです。
戻り値
出力には、停止したコンテナのIDが示されます。
例
sudo docker stop 9f215ed0b0d3
上記のコマンドは、Dockerコンテナ 9f215ed0b0d3 を停止します。
出力
上記のコマンドを実行すると、次の結果が生成されます-
ドッカーrm
このコマンドは、コンテナを削除するために使用されます。
構文
docker rm ContainerID
オプション
- ContainerID -これは削除する必要があるコンテナIDです。
戻り値
出力には、削除されたコンテナのIDが含まれます。
例
sudo docker rm 9f215ed0b0d3
上記のコマンドは、Dockerコンテナ 9f215ed0b0d3 を削除します。
出力
上記のコマンドを実行すると、次の結果が生成されます-
ドッカーの統計
このコマンドは、実行中のコンテナの統計を提供するために使用されます。
構文
docker stats ContainerID
オプション
- ContainerID -これは、統計情報を提供する必要があるコンテナIDです。
戻り値
出力には、コンテナのCPUとメモリの使用率が表示されます。
例
sudo docker stats 9f215ed0b0d3
上記のコマンドは、コンテナ 9f215ed0b0d3 のCPUおよびメモリ使用率を提供します。
出力
上記のコマンドを実行すると、次の結果が生成されます-
ドッカーアタッチ
このコマンドは、実行中のコンテナにアタッチするために使用されます。
構文
docker attach ContainerID
オプション
- ContainerID -これは、添付する必要があるコンテナIDです。
戻り値
None
例
sudo docker attach 07b0b6f434fe
上記のコマンドは、Dockerコンテナ 07b0b6f434fe にアタッチされます。
出力
上記のコマンドを実行すると、次の結果が生成されます-
Dockerコンテナーに接続したら、上記のコマンドを実行して、そのDockerコンテナーでのプロセス使用率を確認できます。
ドッカー一時停止
このコマンドは、実行中のコンテナでプロセスを一時停止するために使用されます。
構文
docker pause ContainerID
オプション
- ContainerID -これは、コンテナ内のプロセスを一時停止する必要があるコンテナIDです。
戻り値
一時停止されたコンテナのContainerID。
例
sudo docker pause 07b0b6f434fe
上記のコマンドは、実行中のコンテナ 07b0b6f434fe のプロセスを一時停止します。
出力
上記のコマンドを実行すると、次の結果が生成されます-
ドッカーの一時停止解除
このコマンドは、実行中のコンテナ内のプロセスを「一時停止解除」するために使用されます。
構文
docker unpause ContainerID
オプション
- ContainerID -これは、コンテナ内のプロセスの一時停止を解除する必要があるコンテナIDです。
戻り値
実行中のコンテナーのContainerID。
例
sudo docker unpause 07b0b6f434fe
上記のコマンドは、実行中のコンテナーのプロセスの一時停止を解除します:07b0b6f434fe
出力
上記のコマンドを実行すると、次の結果が生成されます-
ドッカーキル
このコマンドは、実行中のコンテナ内のプロセスを強制終了するために使用されます。
構文
docker kill ContainerID
オプション
- ContainerID -これは、コンテナ内のプロセスを強制終了する必要があるコンテナIDです。
戻り値
実行中のコンテナーのContainerID。
例
sudo docker kill 07b0b6f434fe
上記のコマンドは、実行中のコンテナ 07b0b6f434fe のプロセスを強制終了します。
出力
上記のコマンドを実行すると、次の結果が生成されます-
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 コマンドを実行してみましょう。
ここから、 ubuntu と hello-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デーモンプロセスを開始するために使用されます。
構文
service docker start
オプション
None
戻り値
Dockerプロセスが開始されたことを示すメッセージ。
例
sudo 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* コマンドを使用する前に、コンテナのプロセス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 コマンドを発行すると、プロンプトは直接* bashシェル*に変わります。
- 次に、 exit コマンドを発行します。 通常、 nsenter コマンドを使用しなかった場合、コンテナーは破棄されます。 しかし、 nsenter コマンドを実行しても、コンテナーはまだ稼働していることに気付くでしょう。
Docker-ファイル
前の章で、コンテナをスピンアップできる* Dockerハブ*からダウンロードされるCentosなどのさまざまなイメージファイルを見てきました。 以下に例を示します。
Docker images コマンドを使用すると、システム内の既存の画像を見ることができます。 上記のスクリーンショットから、 centos と nsenter の2つの画像があることがわかります。
ただし、Dockerには独自のDockerイメージを作成する機能もあり、 Docker Files を使用して作成できます。 Dockerファイルは、画像の作成方法に関する指示が記載されたシンプルなテキストファイルです。
次の手順では、Dockerファイルの作成について説明します。
ステップ1 *- *Docker File というファイルを作成し、 vim を使用して編集します。 ファイルの名前は、「D」を大文字として「Dockerfile」にする必要があることに注意してください。
- ステップ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コマンド*を実行すると、新しいイメージを表示できます。
これで、新しいイメージからコンテナを構築できます。
Docker-パブリックリポジトリ
パブリックリポジトリを使用して、他のすべてのユーザーが使用できるDockerイメージをホストできます。 例は、Docker Hubで利用可能な画像です。 Centos、Ubuntu、Jenkinsなどの画像のほとんどは、すべて一般に公開されています。 また、Docker Hubの公開リポジトリに公開することで、画像を利用可能にすることもできます。
この例では、「Dockerファイルの構築」の章で構築された myimage リポジトリを使用し、その画像をDocker Hubにアップロードします。 まず、Dockerホスト上の画像を確認して、Dockerレジストリにプッシュできるものを確認します。
ここには、「Building Docker Files」の章の一部として作成された myimage:0.1 イメージがあります。 これを使用して、Dockerパブリックリポジトリにアップロードします。
次の手順は、パブリックリポジトリに画像をアップロードする方法を説明しています。
- ステップ1 *-Docker Hubにログインし、リポジトリを作成します。 これは、イメージが保存されるリポジトリです。 [[1]]
ステップ2 *-上記の画面で[リポジトリの作成]ボタンをクリックし、 *demorep という名前のリポジトリを作成します。 リポジトリの可視性が公開されていることを確認してください。
リポジトリが作成されたら、リポジトリに添付されている pull コマンドをメモします。
リポジトリで使用される pull コマンドは次のとおりです-
docker pull demousr/demorep
ステップ3 *-Dockerホストに戻ります。 ここで、 *myimage をDocker Hubで作成された新しいリポジトリにタグ付けする必要があります。 これを行うには、Docker * tagコマンド*を使用します。
この* tagコマンド*の詳細については、この章の後半で説明します。
- ステップ4 *-Dockerログインコマンドを発行して、コマンドプロンプトからDocker Hubリポジトリにログインします。 Dockerログインコマンドは、Docker Hubリポジトリへのユーザー名とパスワードの入力を求めます。
ステップ5 *-画像にタグを付けたら、今度は画像をDocker Hubリポジトリにプッシュします。 これを行うには、Docker *push コマンドを使用します。 このコマンドの詳細については、この章の後半で説明します。
ドッカータグ
このメソッドを使用すると、関連するリポジトリに画像をタグ付けできます。
構文
docker tag imageID Repositoryname
オプション
- imageID -これは、リポジトリにタグ付けする必要があるImageIDです。
- Repositoryname -これは、ImageIDのタグ付けが必要なリポジトリ名です。
戻り値
None
例
sudo docker tag ab0c1d3744dd demousr/demorep:1.0
出力
上記の例の出力例を以下に示します。
ドッカープッシュ
このメソッドにより、画像をDocker Hubにプッシュできます。
構文
docker push Repositoryname
オプション
- Repositoryname -これは、Docker Hubにプッシュする必要があるリポジトリ名です。
戻り値
Docker Hubにプッシュされたリポジトリの長いID。
例
sudo docker push demousr/demorep:1.0
出力
Docker Hubページに戻ってリポジトリに移動すると、リポジトリにタグ名が表示されます。
Dockerホストにアップロードしたリポジトリをプルしてみましょう。 最初に、ローカルDockerホストから画像 myimage:0.1 および demousr/demorep:1.0 を削除しましょう。 Docker * pullコマンド*を使用して、Docker Hubからリポジトリをプルします。
上記のスクリーンショットから、Docker pull コマンドがDocker Hubから新しいリポジトリを取得し、マシンに配置したことがわかります。
Docker-ポートの管理
Dockerでは、コンテナ自体がポートで実行されているアプリケーションを持つことができます。 コンテナを実行するときに、ポート番号を介してコンテナ内のアプリケーションにアクセスする場合、コンテナのポート番号をDockerホストのポート番号にマッピングする必要があります。 これを達成する方法の例を見てみましょう。
この例では、Docker HubからJenkinsコンテナーをダウンロードします。 次に、Jenkinsのポート番号をDockerホストのポート番号にマップします。
- ステップ1 *-まず、Docker Hubで簡単なサインアップを行う必要があります。
- ステップ2 *-サインアップすると、Docker Hubにログインします。
- ステップ3 *-次に、Jenkinsの画像を参照して見つけます。
ステップ4 *-同じページを下にスクロールすると、Docker *pull コマンドが表示されます。 これは、Jenkins ImageをローカルUbuntuサーバーにダウンロードするために使用されます。
- ステップ5 *-Ubuntuサーバーに移動してコマンドを実行します-
sudo docker pull jenkins
- ステップ6 *-コンテナーによって公開されているポートを理解するには、Docker * inspectコマンド*を使用してイメージを検査する必要があります。
この inspect コマンドの詳細を見てみましょう。
ドッカー検査
このメソッドにより、コンテナまたはイメージに関する低レベルの情報を返すことができます。
構文
docker inspect Container/Image
オプション
- Container/Image -検査するコンテナまたは画像
戻り値
JSON形式の画像またはコンテナの低レベル情報。
例
sudo docker inspect jenkins
出力
*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 を実行しましょう。
レジストリコンテナが実際に実行されていることを確認しました。
ステップ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
ステップ6 *-ローカルマシンに *centos イメージがないので、次のDocker pull コマンドを使用して、プライベートリポジトリから centos イメージをプルできます。
sudo docker pull localhost:5000/centos
ここでは、 centos イメージを localhost:5000 でホストされているプライベートリポジトリにプルしています。
システムに画像が表示されると、 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を実行します。
ファイルの詳細が入力されたので、ファイルを保存するだけです。
ステップ2 *-Docker *build コマンドを実行してDockerファイルをビルドします。 それは次のコマンドを使用して行うことができます-
sudo docker build –t=”mywebserver” .
画像に mywebserver のタグを付けています。 イメージが構築されると、ファイルが構築されたことを示す成功メッセージが表示されます。
ステップ3 *-Webサーバーファイルが構築されたので、今度は画像からコンテナを作成します。 これを行うには、Docker *run コマンドを使用します。
sudo docker run –d –p 80:80 mywebserver
上記のコマンドについて次の点に注意する必要があります-
- コンテナによって公開されるポート番号は80です。 したがって、 – p コマンドを使用して、同じポート番号をローカルホストの80ポート番号にマッピングしています。
- –d オプションは、コンテナを分離モードで実行するために使用されます。 これは、コンテナがバックグラウンドで実行できるようにするためです。
WebブラウザーでDockerホストのポート80に移動すると、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 を印刷するために使用されます。
ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。
- ステップ3 *-イメージからコンテナを実行します。
エントリーポイント
このコマンドは、コンテナの実行時にコマンドを実行するためにも使用できます。 ただし、ENTRYPOINTコマンドを使用すると、より柔軟に対応できます。
構文
ENTRYPOINT command param1
オプション
- コマンド-これは、コンテナが起動されたときに実行するコマンドです。
- param1 -これはコマンドに入力されたパラメーターです。
戻り値
コマンドはそれに応じて実行されます。
例
ENTRYPOINTの詳細を理解するために例を見てみましょう。 この例では、Dockerファイルに単純な echo コマンドを入力して、イメージを作成し、そこからコンテナーを起動します。
- ステップ1 *-次のコマンドでDockerファイルをビルドします-
FROM ubuntu
MAINTAINER [email protected]
ENTRYPOINT [“echo”]
ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。
- ステップ3 *-イメージからコンテナを実行します。
ENV
このコマンドは、コンテナ内の環境変数を設定するために使用されます。
構文
ENV key value
オプション
- キー-これは環境変数のキーです。
- 値-これは環境変数の値です。
戻り値
コマンドはそれに応じて実行されます。
例
この例では、Dockerファイルに単純な echo コマンドを入力して、イメージを作成し、そこからコンテナーを起動します。
- ステップ1 *-次のコマンドでDockerファイルをビルドします-
FROM ubuntu
MAINTAINER [email protected]
ENV var1=Tutorial var2=point
ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。
- ステップ3 *-イメージからコンテナを実行します。
ステップ4 *-最後に、 *env コマンドを実行して環境変数を確認します。
WORKDIR
このコマンドは、コンテナの作業ディレクトリを設定するために使用されます。
構文
WORKDIR dirname
オプション
- dirname -新しい作業ディレクトリ。 ディレクトリが存在しない場合は追加されます。
戻り値
コマンドはそれに応じて実行されます。
例
この例では、Dockerファイルに単純な echo コマンドを入力して、イメージを作成し、そこからコンテナーを起動します。
- ステップ1 *-次のコマンドでDockerファイルをビルドします-
FROM ubuntu
MAINTAINER [email protected]
WORKDIR/newtemp
CMD pwd
ステップ2 *-Docker *build コマンドを使用してイメージをビルドします。
- ステップ3 *-イメージからコンテナを実行します。
Docker-コンテナーのリンク
コンテナリンクを使用すると、複数のコンテナを相互にリンクできます。 ポートを公開するよりも優れたオプションです。 手順を追って、その仕組みを学びましょう。
ステップ1 *-Jenkins *pull コマンドを使用して、Jenkinsイメージがまだ存在しない場合はダウンロードします。
ステップ2 *-イメージが利用可能になったら、コンテナを実行しますが、今回は-name オプションを使用してコンテナに名前を指定できます。 これが *source container になります。
- ステップ3 *-次に、宛先コンテナを起動しますが、今回は、ソースコンテナとリンクします。 宛先コンテナには、標準の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 に格納されていることを示しています。
データ量
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ホスト上の場所にマップします。
コンテナーを起動した後、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
テキストファイルを参照し、 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ホストにインストールされるときに作成されます。
これは、DockerホストとLinuxホスト間のブリッジです。 次に、Dockerのネットワークに関連するいくつかのコマンドを見てみましょう。
すべてのDockerネットワークのリスト
このコマンドを使用して、ホスト上のDockerに関連付けられているすべてのネットワークをリストできます。
構文
docker network ls
オプション
None
戻り値
このコマンドは、Dockerホスト上のすべてのネットワークを出力します。
例
sudo docker network ls
出力
上記のコマンドの出力を以下に示します
Dockerネットワークの検査
Dockerに関連付けられているネットワークの詳細を表示するには、Docker network inspect コマンドを使用できます。
構文
docker network inspect networkname
オプション
- networkname -これは検査する必要があるネットワークの名前です。
戻り値
このコマンドは、ネットワークに関するすべての詳細を出力します。
例
sudo docker network inspect bridge
出力
上記のコマンドの出力は以下に示されています-
それでは、コンテナを実行して、ネットワークを再度検査するとどうなるか見てみましょう。 次のコマンドで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
出力
上記のコマンドの出力は以下に示されています-
これで、コンテナを起動するときに新しいネットワークを接続できます。 だから、次のコマンドでUbuntuコンテナをスピンアップしましょう-
sudo docker run –it –network=new_nw ubuntu:latest/bin/bash
そして、次のコマンドを使用してネットワークを検査すると、コンテナがネットワークに接続されていることがわかります。
sudo docker network inspect new_nw
Docker-Node.jsの設定
Node.jsは、サーバーサイドアプリケーションの開発に使用されるJavaScriptフレームワークです。 これは、さまざまなオペレーティングシステムで実行するために開発されたオープンソースフレームワークです。 Node.jsは開発用の一般的なフレームワークであるため、DockerはNode.jsアプリケーションのサポートも確保しています。
Node.jsのDockerコンテナーを起動して実行するためのさまざまな手順を説明します。
- ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すようにNode.jsの画像を検索および表示できます。 検索ボックスに「ノード」と入力し、検索結果に表示されるノード(公式)リンクをクリックするだけです。
ステップ2 *-ノードのDocker *pull コマンドがDocker Hubのリポジトリの詳細に表示されます。
ステップ3 *-Dockerホストで、上記のDocker *pull コマンドを使用して、Docker Hubから最新のノードイメージをダウンロードします。
*pull* が完了すると、次のステップに進むことができます。
ステップ4 *-Dockerホストで、 *vim エディターを使用してNode.jsサンプルファイルを1つ作成します。 このファイルでは、コマンドプロンプトに「HelloWorld」を表示する簡単なコマンドを追加します。
Node.jsファイルで、次のステートメントを追加しましょう-
Console.log(‘Hello World’);
Node.jsで実行すると、「Hello World」フレーズが出力されます。
ファイルを保存してから、次の手順に進んでください。
- ステップ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スクリプトを実行したことが明確にわかります。
Docker-MongoDBの設定
MongoDBは、現代の多くのWebアプリケーションで使用されている有名なドキュメント指向データベースです。 MongoDBは開発用の一般的なデータベースであるため、DockerはMongoDBのサポートも確保しています。
これで、MongoDBのDockerコンテナーを起動して実行するためのさまざまな手順が表示されます。
- ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すように、Mongoの画像を検索および表示できます。 検索ボックスにMongoと入力し、検索結果に表示されるMongo(公式)リンクをクリックするだけです。
ステップ2 *-Docker Hubのリポジトリの詳細にMongoのDocker *pull コマンドが表示されます。
ステップ3 *-Dockerホストで、上記のDocker *pull コマンドを使用して、Docker Hubから最新のMongoイメージをダウンロードします。
- ステップ4 *-Mongoのイメージができたので、最初にMongoDBのインスタンスとなるMongoDBコンテナーを実行しましょう。 このために、次のコマンドを発行します-
sudo docker run -it -d mongo
上記のコマンドについては、次の点に注意することができます-
- –it オプションは、コンテナを対話モードで実行するために使用されます。
- –d オプションは、コンテナをデーモンプロセスとして実行するために使用されます。
- 最後に、Mongoイメージからコンテナを作成しています。
その後、 docker ps コマンドを発行して、実行中のコンテナを確認できます-
次の点に注意してください-
- コンテナの名前は tender_poitras です。 コンテナをスピンアップするとコンテナの名前が変化し続けるため、この名前は異なります。 ただし、起動したコンテナをメモしてください。
- 次に、実行中のポート番号にも注目してください。 27017のTCPポートでリッスンしています。
- ステップ5 *-次に、MongoDBデータベースへの接続に使用されるクライアントとして機能する別のコンテナをスピンアップします。 これのために次のコマンドを発行しましょう-
sudo docker run –it –link=tender_poitras:mongo mongo/bin/bash
上記のコマンドについては、次の点に注意することができます-
- –it オプションは、コンテナを対話モードで実行するために使用されます。
- 現在、新しいコンテナを既に起動されているMongoDBサーバーコンテナにリンクしています。 ここでは、すでに起動されているコンテナの名前を記載する必要があります。
- 次に、Mongoコンテナーをクライアントとして起動し、新しいコンテナーで bin/bash シェルを実行することを指定します。
これで、新しいコンテナになります。
ステップ6 *-新しいコンテナで *env コマンドを実行して、MongoDBサーバーコンテナに接続する方法の詳細を確認します。
- ステップ6 *-次に、クライアントコンテナからMongoDBサーバーに接続します。 私たちは次のコマンドを介してこれを行うことができます-
mongo 172.17.0.2:27017
上記のコマンドについて、次の点に注意する必要があります
- mongo コマンドは、MongoDBデータベースへの接続に使用されるクライアント mongo コマンドです。
- IPおよびポート番号は、 env コマンドを使用したときに取得されるものです。
コマンドを実行すると、MongoDBデータベースに接続されます。
その後、コマンドプロンプトで任意のMongoDBコマンドを実行できます。 この例では、次のコマンドを実行しています-
use demo
このコマンドは、データベース名 demo に切り替えるために使用されるMongoDBコマンドです。 データベースが利用できない場合、作成されます。
これで、クライアントとサーバーのMongoDBコンテナーが正常に作成されました。
Docker-NGINXの設定
NGINXは、サーバーサイドアプリケーションの開発に使用される一般的な軽量のWebアプリケーションです。 これは、さまざまなオペレーティングシステムで実行するために開発されたオープンソースのWebサーバーです。 nginx は開発用の一般的なWebサーバーであるため、Dockerは nginx をサポートしていることを確認しています。
これで、 nginx のDockerコンテナーを起動して実行するためのさまざまな手順が表示されます。
ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すように、 *nginx の画像を検索および表示できます。 検索ボックスにnginxと入力し、検索結果に表示される nginx (公式)リンクをクリックするだけです。
ステップ2 *-Docker Hubのリポジトリの詳細に *nginx のDocker pull コマンドが表示されます。
ステップ3 *-Dockerホストで、上記のDocker *pull コマンドを使用して、Docker Hubから最新のnginxイメージをダウンロードします。
ステップ4 *-次のコマンドで *nginx コンテナを実行してみましょう。
sudo docker run –p 8080:80 –d nginx
ポート80である nginx サーバーのポートを、Dockerホストのポート8080に公開しています。
コマンドを実行すると、URL http://dockerhost:8080 を参照すると、次の出力が表示されます。 これは、 nginx コンテナーが稼働中であることを示しています。
ステップ5 *- *ngnix コンテナで単純なWebページをホストできる別の例を見てみましょう。 この例では、単純な HelloWorldl ファイルを作成し、それを nginx コンテナーでホストします。
まず、 HelloWorldl というHTMLファイルを作成しましょう
HTMLファイルに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の場合、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バージョンに関する必要な詳細がすべて取得されます。
イメージのプルとコンテナの実行
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 GUIをダウンロードするよう求められます。 ダウンロードしたら、コンテンツを解凍するだけです。 Kitematic.exe というファイルがあります。 このexeファイルをダブルクリックして、GUIインターフェイスを開きます。
次に、Docker Hubにログインし、GUIから入力するように要求されます。 必要なユーザー名とパスワードを入力して、[ログイン]ボタンをクリックするだけです。
ログインすると、インターフェースの左側でシステムにダウンロードされたすべての画像を見ることができます。
右側には、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]ボタンをクリックします。
この操作の後、システムの再起動が必要になる場合があります。
ステップ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デーモン*が動作していることを確認します
ASP.Netコンテナーのインストール
ASP.Netコンテナーのインストール方法を見てみましょう。
ステップ1 *-最初のステップは、Docker Hubから画像をプルすることです。 Docker Hubにログインすると、以下に示すように、 *Microsoft/aspnet の画像を検索して表示できます。 検索ボックスに asp と入力し、検索結果に表示されるMicrosoft/aspnetリンクをクリックするだけです。
ステップ2 *-Docker Hubのリポジトリの詳細に、ASP.NetのDocker *pull コマンドが表示されます。
ステップ3 *-Dockerホストに移動し、microsoft/aspnetイメージに対してDocker *pull コマンドを実行します。 画像はかなり大きく、4.2 GBに近いことに注意してください。
- ステップ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
ステップ7 *-DockerコンテナーでIISを実行します。 DockerコンテナーのIPアドレスを見つけるには、以下に示すようにDocker *inspect コマンドを発行できます。
Docker-クラウド
Docker Cloudは、Dockerが提供するサービスで、次の操作を実行できます-
- ノード-Docker CloudをAzureやAWSなどの既存のクラウドプロバイダーに接続して、これらの環境でコンテナーを起動できます。
- クラウドリポジトリ-独自のリポジトリを保存できる場所を提供します。
- 継続的統合- Github と接続し、継続的統合パイプラインを構築します。
- アプリケーションの展開-インフラストラクチャとコンテナを展開および拡張します。
- 連続展開-展開を自動化できます。
入門
次のリンクからDocker Cloudの使用を開始できます-https://cloud.docker.com/
ログインすると、次の基本的なインターフェースが提供されます-
クラウドプロバイダーへの接続
最初のステップは、既存のクラウドプロバイダーに接続することです。 次の手順は、Amazon Cloudプロバイダーと接続する方法を示します。
ステップ1 *-最初のステップは、正しいAWSキーがあることを確認することです。 これは、 *aws コンソールから取得できます。 次のリンクを使用して aws アカウントにログインします-https://aws.amazon.com/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ユーザー名を入力します。
- ステップ9 *-次に、*次のステップ*ボタンをクリックし、次の画面で、前のステップで作成されたポリシーを添付します。
ステップ10 *-最後に、ロールが作成された最後の画面で、作成された *arn ロールを必ずコピーしてください。
arn:aws:iam::085363624145:role/dockercloud-role
ステップ11 *- *Docker Cloud に戻り、 Cloud Providers を選択して、Amazon Web Servicesの横にある plug symbol をクリックします。
*arn* ロールを入力し、 *Save* ボタンをクリックします。
保存すると、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
ステップ2 *-次に、 dockerデーモンプロセス*を起動する必要があります。 ただし、今回は、ログオプションを指定するために –l パラメーターを追加する必要があります。 したがって、* dockerデーモンプロセス*を起動するときに次のコマンドを発行します。
sudo dockerd –l debug &
上記のコマンドについて次の点に注意する必要があります-
- dockerd は、* dockerデーモンプロセス*の実行可能ファイルです。
- –l オプションは、ログレベルを指定するために使用されます。 私たちの場合、これをデバッグとして入れています
- *&*は、ロギングが有効になった後にコマンドプロンプトに戻るために使用されます。
ロギングを使用してDockerプロセスを開始すると、コンソールに送信されている Debug Logs も表示されます。
これで、 docker images などのDockerコマンドを実行すると、デバッグ情報もコンソールに送信されます。
コンテナロギング
ロギングはコンテナレベルでも利用できます。 したがって、この例では、まず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/ に保存します。
- ステップ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ファイルは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 ps を実行すると、コンテナーが実際に稼働していることがわかります。
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がどのように機能するかを単純な形式で示しています。
*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更新を発行します。
- ステップ5 *-前の章で説明したように、Dockerパッケージをインストールします。
ステップ6 *-次のパッケージをインストールして、 *kubernetes をインストールします-
apt-get install –y kubelet kubeadm kubectl kubernetes-cni
ステップ7 *-すべての *kubernetes パッケージがダウンロードされたら、次のコマンドを使用してkubernetesコントローラーを起動します-
kubeadm init
完了すると、マスターが稼働中であり、ノードがクラスターに参加できることを示す成功メッセージが表示されます。