前書き

画像:https://i.imgur.com/5uQQNAa.gif [ドライモニタリングGIF]

dryは、https://www.digitalocean.com/community/tutorials/the-docker-ecosystem-an-introduction-とやり取りするために構築されたシンプルだが広範なターミナルアプリケーションです。 to-common-components [Docker]コンテナとその画像。 dryを使用すると、ルーチンhttps://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04[Docker Engineコマンド]を実行するときに伴う繰り返しが削除されます。ネイティブDocker CLIのより視覚的な代替手段を提供します。

dryは、コンテナをすばやく起動および停止し、Dockerイメージを安全にまたは強制的に削除し、リアルタイムのコンテナプロセスを継続的に監視し、Dockerの + info ++ inspect ++ history +、および ` + log + `コマンド。

公式のDocker Engine CLIを介して実行できるほとんどのコマンドは、同じ動作と結果で、ドライでより簡単に使用できます。 dryにはさらにDocker Swarm機能があり、マルチホストコンテナーのセットアップを監視および管理するためのアウトレットを提供します。

このチュートリアルでは、dryをインストールし、その最も便利な機能のいくつかを調べます。

  • Dockerコンテナー、画像、およびネットワークとの対話、

  • Dockerコンテナーの監視、および

  • オプションで、Docker Swarmのノードおよびサービスと対話します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • Ubuntu 16.04の初期サーバーセットアップを使用してセットアップされた1つのUbuntu 16.04サーバー(sudo非ルートを含む)ユーザーとファイアウォール。

  • Ubuntu 16.04にDockerをインストールして使用する方法のように、Dockerがインストールされました。

  • いくつかのアクティブなDockerコンテナがネットワークを構築して、テストを行いました。

  • このチュートリアルの例として、https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-andのWordPressとPHPMyAdminのセットアップ(ドキュメントルートのオプションのステップなし)を使用します。 -phpmyadmin-with-docker-compose-on-ubuntu-14-04 [Ubuntu 14.04でDocker Composeを使用してWordpressとPhpMyAdminをインストールする方法]。

  • または、独自の既存のコンテナ設定を使用できます。

  • オプションで、ローカルコンピューター上のDocker MachineおよびDocker Swarmを使用するDockerセットアップ。 これは、最後のステップでドライのSwarm機能を試す場合に必要です。 これは、https://www.digitalocean.com/community/tutorials/how-to-provision-and-manage-remote-docker-hosts-with-docker-machine-on-ubuntu-16-04に従って設定できます。 [Ubuntu 16.04のDockerマシンでリモートDockerホストをプロビジョニングおよび管理する方法]およびhttps://www.digitalocean.com/community/tutorials/how-to-create-a-cluster-of-docker-containers-with-docker -swarm-and-digitalocean-on-ubuntu-16-04 [Ubuntu 16.04でDocker SwarmとDigitalOceanを使用してDockerコンテナのクラスターを作成する方法]。

ステップ1-ドライのインストール

まず、Dockerサーバーにdryをインストールする必要があります。 ドライバイナリの最新バージョンは、https://github.com/moncho/dry/releases [dryのGitHubリリースページ]で入手できます。

最新バージョンの `+ dry-linux-amd64 `バイナリをダウンロードします。これは公開時に ` v0.9-beta.3 +`です。

wget https://github.com/moncho/dry/releases/download//dry-linux-amd64

次に、新しいバイナリファイルを `+ dry-linux-amd64 `から ` / usr / local / bin / dry +`に移動して名前を変更します。

sudo mv dry-linux-amd64 /usr/local/bin/dry

+ / usr / local / bin +`は、サーバーのローカルプログラムのバイナリを格納するために使用される標準の場所です。 ドライバイナリをそのディレクトリに移動すると、そのディレクトリがシェルのhttps://www.digitalocean.com/community/tutorials/how-to-に含まれているため、サーバー内のどこからでもコマンドラインでdryを呼び出すことができます。 linux-vps上の環境変数とシェル変数の読み取りと設定[+ $ PATH +`環境変数]。

実行を許可するために、 `+ chmod`でバイナリパーミッションを変更します。

sudo chmod 755 /usr/local/bin/dry

`+ -v `オプションを指定してプログラムを実行することにより、 ` dry +`がアクセス可能で正常に動作することをテストできます。

dry -v

これにより、バージョン番号とビルドの詳細が返されます。

Version Details Outputdry version 0.9-beta.2, build d4d7a789

ドライがセットアップされたので、使用してみましょう。

ステップ2-Dockerコンテナーとの対話

ドライを実行して、端末にダッシュボードを表示します。

dry

ダッシュボードの上部には、Dockerバージョン、Docker Engine APIバージョン、サーバーがDocker Swarm対応ワーカー/マネージャーノードであるかどうか、サーバーのホスト名とリソースなど、サーバーとDockerソフトウェアに関する情報があります。

ダッシュボードの下部には、ドライのさまざまな部分にアクセスするために使用できるナビゲーションキーの参照があります。

Navigation key options[H]:Help [Q]:Quit | [F1]:Sort [F2]:Toggle Show Containers [F5]:Refresh [%]:Filter |
[m]:Monitor mode [2]:Images [3]:Networks [4]:Nodes [5]:Services | [Enter]:Commands

このダッシュボード自体は、最初に乾燥を開始したときのデフォルトの `+ Containers +`リストになります。 このビューでは、ホストのコンテナの一般的な状態を確認できます。

前提条件チュートリアルのサンプルWordpress、MariaDB、およびPHPMyAdminコンテナースタックを使用している場合、これら3つの新しく構成されたコンテナーが一覧表示されます。

画像:https://i.imgur.com/Wjd4PWh.png [ドライダッシュボード画像]

キーボードの上矢印と下矢印を使用してWordpressコンテナーを選択し、「+ ENTER +」を押します。

これにより、ポートマッピング、ネットワークリンク、ネットワークコンテナーIPアドレスなど、コンテナーに関する情報が画面上部に表示されます。

WordPress Container Statistics  Container Name:  wordpress_wordpress_1                    ID:       f67f9914b57e       Status:  Up 13 minutes
 Image:           wordpress                                Created:  About an hour ago
 Command:         docker-entrypoint.sh apache2-foreground
 Port mapping:    0.0.0.0:8080->80/tcp
 Network Name:    bridge
 IP Address:     172.17.0.3
 Labels           6

コンテナを選択すると、画面の中央下にも選択可能なオプションの新しいリストが表示されます。

  • + Fetch logs +。これは、Docker Engineコマンドhttps://docs.docker.com/engine/reference/commandline/logs/[`+docker logs + `]と同等です。 これは、コンテナ内のエラーのデバッグとトラブルシューティングに役立ちます。

  • 「+ Kill container in」。コンテナが応答せず、期待どおりにエキサイティングでない場合に使用できます。

  • + Remove container in:不要なコンテナをきれいに削除するために使用できます。

  • + Inspect container +。これはhttps://docs.docker.com/engine/reference/commandline/container_inspect/[`+docker container inspect + `]と同等です。

  • + Restart +。コンテナを停止して再起動します。 Docker Engineコマンドhttps://docs.docker.com/engine/reference/commandline/restart/ [再起動]またはhttps://docs.docker.com/engine/reference/commandline/ps/を入力するよりもはるかに高速です。コンテナの[ステータスのクエリ]。

  • + Show image history +:コンテナの画像を作成するために使用されたコマンドをリストします。 これらの「レイヤー」は、イメージのビルドプロセス中に生成され、https://www.digitalocean.com/community/tutorials/docker-explained-using-dockerfiles-to-automate-building-of-で提供されるコマンド/アクションの結果です画像[Dockerfile]。 このオプションを使用すると、ベースDockerイメージを使用してコンテナーが正確に生成されたことがわかります。

  • 「+ Stats + Top 」。CPU使用率、メモリ消費、インバウンドおよびアウトバウンドのネットワークトラフィック、ファイルシステム操作、プロセスIDの合計、コンテナの全体的なアップタイムなどの情報が含まれます。 また、プロセスリストも含まれています。これは、https://www.digitalocean.com/community/tutorials/how-to-monitor-cpu-use-on-digitalocean-droplets#top [` top +の出力と機能的に同じです。 `]。

  • コンテナを停止する「+ Stop 」。 「 F2 」を使用して「 Containers 」ビューのコンテナーを切り替えて「 currently stopped and active 」を含めたり、選択した後に「 Restart +」オプションで停止したコンテナーを再起動したりできます。

+ ESC`キーを押して、ダッシュボードのルートの + Containers`セクションに戻ります。 ここから、 `+ Images`セクションを見ていきます。

ステップ3-Dockerイメージとの対話

`+ Containers `セクションから ` 2 `を押して、dryの ` Images +`セクションにアクセスします。

image:https://i.imgur.com/18pFgHi.png [画像セクション]

このセクションでは、https://docs.docker.com/engine/reference/commandline/image_inspect/ [+ docker image inspect + command]に簡単にアクセスできます。 dryには便利なキーボードショートカットもあり、ナビゲーションバーで確認できます。

  • 「ダングリングの削除」の「+ CTRL + D 」、「ダングリングボリューム」は、どのコンテナからも参照されなくなったため、冗長な他のコンテナボリュームを指します。 通常、Dockerのコマンドラインでは、この操作には「 docker volume rm 」コマンドと「 dangling = true +」フラグ、およびターゲットデータボリュームが含まれます。

  • +docker rmi + `と同等の + Remove + の場合は + CTRL + E + `を使用すると、画像を削除できます。そのイメージから作成されたコンテナはまだアクティブで実行されていません。

  • + Force Remove +`の場合は `+ CTRL + F +。強調表示された画像を、 `+ docker rmi –force +`を使用しているかのように強制的に削除できます。

  • + History +`の `+ I +。これは、 + Container`セクションの + Show Image History`と同じデータを表示します。

これまでのところ、乾燥した容器と画像のセクションを見てきました。 最後に検討するセクションはネットワークです。

ステップ4-Dockerネットワークとの対話

「+ Images 」セクションから「+3」を押して「+ Networks +」セクションにアクセスします。

image:https://i.imgur.com/rR874kM.png [Docker Networks Dashboard]

このセクションは、Dockerコンテナのhttps://docs.docker.com/engine/reference/commandline/network_inspect/ [ネットワークリンクとネットワーク構成の検証]に最適です。

`+ CTRL + E `でhttps://docs.docker.com/engine/reference/commandline/network_rm/[Dockerからネットワークを削除]できますが、 ` bridge `のような定義済みのデフォルトのDockerネットワークは削除できません。 ただし、例として、矢印キーで選択して ` ENTER `を押すと、とにかく ` bridge +`を削除できます。 次のような長い出力が表示されます。

Output. . .
   "Containers": {
       "34f8295b39b7c3364d9ceafd4e96194f210f22acc41d938761e1340de7010e05": {
           "Name": "wordpress_wordpress_db_1",
           "EndpointID": "68370df8a13b92f3dae2ee72ff769e5bdc00da348ef3e22fa5b8f7e9e979dbd5",
           "MacAddress": "02:42:ac:11:00:02",
           "IPv4Address": "172.17.0.2/16",
           "IPv6Address": ""
       },
       "e7105685e0e6397fd762949e869095aa4451a26cdacdad7f5e177bde52819c4a": {
           "Name": "wordpress_wordpress_1",
           "EndpointID": "44ea3a133d887c5352b8ccf70c94cda9f05891b2db8b99a95096a19d4a504e16",
           "MacAddress": "02:42:ac:11:00:04",
           "IPv4Address": "172.17.0.4/16",
           "IPv6Address": ""
       },
       "e7d65c76b50ff03fc50fc374be1fa4bf462e9454f8d50c89973e1e5693eef559": {
           "Name": "wordpress_phpmyadmin_1",
           "EndpointID": "7fb1b55dd92034cca1dd65fb0c824e87a9ba7bbc0860cd3ed34744390d670b78",
           "MacAddress": "02:42:ac:11:00:03",
           "IPv4Address": "172.17.0.3/16",
           "IPv6Address": ""
       }
   },
. . .

上記の出力の部分は、コンテナリンクとコンテナ「+ bridge 」ネットワークのネットワークIPアドレスとMACアドレスを示しています。 これから、すべてのコンテナが「 bridge」ネットワークのメンバーであり、通信できることを確認できます。これは、コンテナネットワークが有効であることの基本的な指標です。

ネットワーク出力を閉じるには、「+ ESC 」を使用します。 ドライの「 Containers 」、「 Images 」、および「 Networks +」のセクションを確認したので、次にドライの監視機能に進みましょう。

ステップ5-Dockerコンテナーの監視

「+ M 」キーを押すと、現在のサーバー/ホストで実行中のすべてのコンテナーの概要がすばやく表示されます。 この画面には、 ` Containers `、 ` Images `、および ` Networks +`など、dryのルートセクションのいずれからでもアクセスできます。

image:https://i.imgur.com/L7cEJ1L.png [モニターモード画像]

この情報の一部はプログラムの別の場所( `+ Stats + Top +`コンテナオプションなど)にリストされていますが、このビューはすべてのコンテナに関する情報の中心的な場所を提供し、スタック全体を監視できます。 これは、大量のコンテナを管理するときに役立ちます。

「+ Q +」を押してダッシュボードを終了します。 ここから、Docker Swarmを使用してドライセットアップします。

ステップ6-Docker Swarm Cluster Managerへのドライインストール(オプション)

ローカルコンピューターから、ユーザー+ Docker-machineを使用して、指定されたクラスターマネージャーノードにSSHで接続します。 Docker Swarmの前提条件のチュートリアルでは、これは「+ node-1 +」として設定されていました。

docker-machine ssh node-1

ドライインストールの別の方法を示すために、公式のインストールスクリプト「+ curl 」を実行します。 ` curlを避けたい場合は…​ | sh + `パターンでは、ステップ1のようにdryをインストールできます。

curl -sSf https://moncho.github.io/dry/dryup.sh | sh

インストールスクリプトは自動的にドライバイナリを `+ / usr / local / bin`に移動します:

Outputdryup: Moving dry binary to its destination
dryup: dry binary was copied to /usr/local/bin, now you should 'sudo chmod 755 /usr/local/bin/dry'

手順1で行ったように、バイナリのアクセス許可を更新します。

sudo chmod 755 /usr/local/bin/dry

さあ、乾かしてみてください。

dry

最初の「+ Containers 」セクションの右上に、以前の手順で空だった「 Swarm 」および「 Node role +」ステータス行が表示されます。

OutputSwarm:      active
Node role:  manager
Nodes:      3

また、長い画像名を持つ2つのコンテナがリストされます。 他の3つのコンテナは他のSwarmワーカーノードに分散されており、前提条件チュートリアルの `+ webserver +`サンプルサービスによって定義されました。

クラスターマネージャーのドライインストールの準備ができたので、次にDocker Swarmでドライがどのように機能するかを見てみましょう。

ステップ7-Docker Swarmノードとの対話(オプション)

「+ Containers 」セクションから「+4」を押して「+ Nodes +」セクションに移動します。

image:https://i.imgur.com/9q4uXRr.png [ダッシュボードノードセクション]

このセクションには、各ノードの役割(マネージャーまたは仕事)、ステータス、可用性など、いくつかの便利なメトリックが表示されます。 画面上部の行には、リソース消費情報が表示されます。

ここから、矢印キーを使用して「+ node-2 」を選択し、「 ENTER」を押します。 これにより、個々のノードのタスクがプルアップされます。

image:https://i.imgur.com/lZeJ9pN.png [node-2 Tasks Dashboard]

`+ webserver `サービスに関して、 ` node-2 `は5つのネットワーク化されたコンテナの最初と2番目を保持します。 このビューのタスクは、2つのコンテナの「 CURRENT STATE」がアクティブであることを示し、それらが実行されている時間をリストします。 ここでの独自のコンテナ名の番号は異なる場合があります。 これは、コンテナがどのワーカーノードに割り当てられるかによって異なります。これは、https://docs.docker.com/engine/reference/commandline/service_create/ [Dockerサービスコマンド]によって決定されます。

ここで「+ ESC 」を押して「 Nodes +」セクションに戻り、ドライのキーバインドのいくつかを調べます。

Docker Swarmを使用する際の一般的なタスクは、特定のノードの状態または可用性を変更することです。 `+ node-1 `を再度ハイライトし、 ` CTRL + A `を押して ` Set Availability +`プロンプトを表示します。

OutputChanging node availability, please type one of ('active'|'pause'|'drain')

「+ drain 」と入力し、「 ENTER +」で確定します。

drainオプションは、ノードがSwarmクラスターマネージャーから新しい方向を受信するのを防ぎます。通常、計画された交代に使用されます。 また、ドレインの使用は、ノードマネージャーがアクティブな可用性に設定された別のノードでレプリカを起動し、ドレインされたノードの一時的なダウンタイムを補正することを意味します。

`+ drain +`コマンドを送信すると、左上のステータスメッセージがアクションを確認します:

左上に表示されるステータスメッセージに、このアクションの確認が表示されます。 この変更は `+ AVAILABILITY +`カラムにも反映されます:

OutputNode  availability is now drain

また、「+ AVAILABILITY +」列に変更が反映されていることにも気付くでしょう。

`+ node-2 `を元に戻すには、それをもう一度ハイライトし、 ` CTRL + A `を押して ` Set Availability `プロンプトを戻します。 今回は、「 active 」と入力して「 ENTER」を押します。

このアクションの確認メッセージも表示されます。

OutputDocker daemon: update  availability is now active

使用しなかったオプション「+ pause 」は、ノードで見つかった各コンテナ内のすべてのプロセスを、それらが再び「 active +」として設定されるまで一時的に停止します。

最後のステップでは、Docker Swarmサービスとやり取りします。

ステップ8-Docker Swarmサービスとの対話(オプション)

`+ 5 `を押して、dryの ` Services`セクションを表示します。

image:https://i.imgur.com/c7DMszC.png [ダッシュボードサービスセクション]

前提条件のチュートリアルでは、インスタンスを複製するように設定されているサービス「+ webserver 」を1つだけ設定します(つまり、 必要に応じて最大5個まで新しいコンテナを作成します。 このビューは、「 5/5 +」レプリカがアクティブであることを確認し、サービスが使用しているポートマッピングとその分散タスクを表示します。

dryを使用して、サービスの詳細を確認できます。 `+ webserver `サービスが強調表示されたら、 ` ENTER +`を押します。

image:https://i.imgur.com/Vob3wMS.png [Dashboard webserver Task Summary]

この詳細なサービスビューには、サービスとそのSwarmノードの状態に関する多くの情報が含まれています。

興味深いことに、サービスが5に設定されているにもかかわらず、ここに7つのタスクがリストされていることに気付くかもしれません。 これは、「+ node-2 +」をドレインモードに切り替えたときに、Docker Swarmがステップ7のテストから2つの追加のレプリカタスクを作成したためです。

また、dryを使用して、レプリカの最大数を増やすこともできます。 `+ ESC `を押して ` Services `セクションに戻り、 ` webserver `サービスを強調表示しながら ` CTRL + S +`を入力します。 これにより、スケーリングプロンプトが表示されます。

OutputScale service. Number of replicas?

コンテキストでは、このサービスのスケーリングは、Webトラフィックの増加による追加リソースの要求を満たすのに役立ちます。 プロンプトに「8」と入力し、「+ ENTER +」を押して、レプリカの数を8に増やしましょう。

アクションを確認するには、この確認メッセージを確認してください。

OutputDocker daemon: update v6gbc1ms0pi scaled to 8 replicas

`+ Services `ビューには、サービスの ` 8/8 +`レプリカが一覧表示されます。

サービスを完全に削除する場合は、そのサービスを強調表示し、 `+ CTRL + R +`を押してサービス削除プロンプトを表示します。

OutputAbout to remove the selected service. Do you want to proceed? y/N

不要になった場合や実行したくない場合は、これを使用して `+ webserver +`サービスを削除できます。

最後に、ダッシュボードを終了してプログラムを終了するには、「+ Q +」を押します。

結論

このチュートリアルに従うことで、DockerホストとDocker Swarmクラスターマネージャーでドライをセットアップしました。 このチュートリアルでは、Dockerコンテナ、画像、ネットワーク、Docker Swarmノードやサービスとのやり取りなど、ドライの機能の基本事項も取り上げました。

Dockerを実行しているリモートホストにドライを接続する2番目の方法があります。これは、ドライを実行するときにリモートホストのIPアドレスで「+ -H +」オプションを使用します これは、ドライバイナリをインストールできない、または興味がない状況で役立ちます。

ここから、独自のDockerセットアップにdryを適用して、ワークフローを合理化する方法を検討してください。 ドライの追加のキーバインドについては、https://github.com/moncho/dry#dry-keybinds [the GitHub README]をご覧ください。