非常に便利なオープンソース Docker ツール 5 つを強くお勧めします

非常に便利なオープンソース Docker ツール 5 つを強くお勧めします

導入

Docker コミュニティは、さまざまなユースケースを処理するのに役立つ多くのオープンソース ツールを作成しています。この記事では、著者が最も役立つ 5 つの Docker ツール、つまり Watchtower (Docker コンテナの自動更新)、docker-gc (コンテナとイメージのガベージ コレクション)、docker-slim (コンテナのスリム化)、rocker: Dockerfile の制限を突破、ctop (コンテナのようなトップレベル インターフェイス) を推奨しています。

Docker コミュニティは、想像以上に多くのユースケースに役立つオープンソース ツールを多数作成しています。

インターネット上には多くの優れた Docker ツールがあり、そのほとんどはオープンソースで Github で見つけることができます。過去 2 年間、私は Docker に非常に熱中しており、ほとんどの開発プロジェクトで Docker を使用してきました。 Docker を使い始めると、当初考えていたよりも多くのシナリオで使用できることがわかります。 Docker にできる限りのことをしてもらいたいと思うでしょうし、期待を裏切ることはありません!

Docker コミュニティは非常に活発で、毎日非常に多くの便利なツールが登場しているため、コミュニティ内で起こっているすべてのイノベーションについていくのは難しい場合があります。皆さんのお役に立てるよう、私が日々の仕事で使用している興味深く便利な Docker ツールをいくつか集めました。これらのツールにより、作業効率が向上し、手動で行う必要のある作業が軽減されます。

watchtower (Docker コンテナを自動的に更新します)

Watchtower は実行中のコンテナを監視し、コンテナが最初に起動されたイメージへの変更を監視します。 Watchtower はイメージが変更されたことを検出すると、新しいイメージを使用して対応するコンテナを自動的に再起動します。最新のビルドイメージをローカル開発環境で試してみたかったので、それを使用しました。

Watchtower 自体は Docker イメージとしてパッケージ化されているため、他のコンテナと同じように実行できます。 Watchtower を実行するには、次のコマンドを実行する必要があります。

docker run -d --name watchtower --rm -v /var/run/docker.sock:/var/run/docker.sock v2tec/watchtower --interval 3

上記のコマンドでは、マウント ファイル /var/run/docker.sock を使用して Watchtower コンテナを起動しました。これは、Watchtower が Docker デーモン API と対話できるようにするために必要です。間隔オプションの間隔に 30 秒を渡します。このオプションは、Watchtower のポーリング間隔を定義します。 Watchtower はさらに多くのオプションをサポートしており、ドキュメントに記載されているとおりに使用できます。

ここで、Watchtower が監視できるコンテナを起動します。

docker run -p 4000:80 --name friendlyhello shekhargulati/friendlyhello:latest

これで、Watchtower は friendlyhello コンテナの監視を穏やかに開始します。新しいイメージを Docker Hub にプッシュすると、Watchtower は後続の実行で利用可能な新しいイメージを検出します。そのコンテナは正常に停止され、この新しいイメージを使用してコンテナが起動されます。以前に渡したオプションを実行コマンドに渡します。つまり、コンテナは引き続き公開されたポート 4000:80 の使用を開始します。

デフォルトでは、Watchtower は更新されたイメージがあるかどうか Docker Hub レジストリをポーリングします。 Watchtower は、環境変数 REPO_USER および REPO_PASS でレジストリ資格情報を渡すことによって、プライベート レジストリをポーリングするように構成できます。

Watchtower について詳しく知るには、Watchtower のドキュメントを読むことをお勧めします。

https://github.com/v2tec/watchtower/blob/master/README.md

GitHub アドレス: https://github.com/v2tec/watchtower

docker-gc (コンテナとイメージのガベージコレクション)

docker-gc ツールは、不要なコンテナとイメージを削除して Docker ホストをクリーンアップするのに役立ちます。 1 時間以上経過したコンテナはすべて削除されます。さらに、残りのコンテナに属していない画像も削除されます。

docker-gc はスクリプトとしてもコンテナとしても使用できます。 docker-gc をコンテナとして実行します。 docker-gc を使用して削除可能なすべてのコンテナとイメージを検索するには、コマンドは次のようになります。

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e DRY RUN=1 spotify/docker-gc

上記のコマンドでは、docker-gc が Docker API と対話できるように、docker.sock ファイルをロードします。削除されるコンテナとイメージを見つけるために、環境変数 DRY_RUN=1 を渡します。このパラメータが指定されていない場合、docker-gc はすべてのコンテナとイメージを削除します。 docker-gc が何を削除するのかを事前に確認しておくのがベストです。上記のコマンドの出力は次のようになります。

\ [2017-04-28T06:27:24 \] \ [info \]:次の容器は削除されていました0c1b3b0972bb792bee508 60c35a4 bc08ba32b527d53eab173d12a15c28deb931/vibrant_ \ [info \]:次のコンテナは、2A72D41E4B25E2782F7844E188643E395650A9ECCA660E7A0DC2B7989E5ACC28 /FRINDRYHELLO_ WEB \ 56:00F017A8C2A6E1 FE2F FD05C281 F27D069D2A99323A8CD514DD35F228BA26D2FF \ 6A5AC4CE6524 8DD970B538922C54E535700CAFE9448B52A3094483EA \ [HELLY-WORLD:最新\] \ [2017-04-28T06:27:24 \] \ DD970B538922C54E535700CAFE9448B52A3094483EA \ [Python:2.7-slim \]

docker-gc クリーンアップ ソリューションに同意する場合は、DRY_RUN を使用せずに docker-gc を再度実行してクリーンアップ操作を実行できます。

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock spotify/docker-gc

docker-gc は他のオプションもサポートしています。詳細については、docker-gc のドキュメントを読むことをお勧めします。

https://github.com/spotify/docker-gc/blob/master/README.md

GitHub アドレス: https://github.com/spotify/docker-gc

docker-slim (コンテナの魔法のスリム化ピル)

Docker イメージのサイズが心配な場合は、docker-slim が問題の解決に役立ちます。

docker-slim ツールは、静的および動的分析方法を使用して、肥大化したイメージをスリム化します。 docker-slim を使用するには、Github から Linux または Mac 用のバイナリ インストール パッケージをダウンロードできます。ダウンロードに成功したら、システムの PATH 変数に追加します。

例として、公式の Docker ドキュメントに従って friendlyhello という名前の Docker イメージを作成しました。イメージ サイズは 194 MB です (以下を参照)。

単純なアプリケーションの場合、194 MB のデータをダウンロードする必要があることがわかります。 docker-slim を使用して、どれだけの余分な部分を削減できるか確認してみましょう。

docker-slim ビルド --http-probe friendlyhello

docker-slim ツールは、ファット イメージに対して一連のチェックと測定を実行し、最終的にイメージのシン バージョンを作成します。この減量の大きさを見てみましょう。

ご覧のとおり、画像サイズは 24.9 MB に縮小されています。このコンテナを起動すると、同じように実行されます。 docker-slim ツールは、Java、Python、Ruby、Node.js アプリケーションをサポートします。

自分で試してみて、どれくらい減らせるか見てみましょう。私の個人的なプロジェクトでは、ほとんどの場合にうまく機能することがわかりました。 docker-slim の詳細については、次のドキュメントを参照してください。

https://github.com/docker-slim/docker-slim/blob/master/README.md

GitHub アドレス: https://github.com/docker-slim/docker-slim

ロッカー (Dockerfile の制限を破る)

Docker を使用する開発者のほとんどは、イメージを構築するために Dockerfile を使用します。 Dockerfile は、イメージを組み立てるためにユーザーがコマンド ラインで呼び出すことができるすべてのコマンドを定義する宣言的な方法です。

Rocker (https://github.com/grammarly/rocker) は、Dockerfile 命令セットに新しい命令を追加します。 Grammarly は、Dockerfile 形式で発生した問題を解決するために Rocker を作成しました。 Grammarly チームは、これを作成した理由を詳しく説明したブログを書きました。 Rocker をより深く理解するために、ぜひ読んでみてください。彼らはブログ投稿で 2 つの問題を指摘しました。

Docker イメージのサイズ。

ビルド速度が遅い。

ブログでは、Rocker によって追加されたいくつかの新しいコマンドについても言及されています。 Rocker でサポートされているすべてのコマンドについては、Rocker のドキュメントを参照してください。

https://github.com/grammarly/rocker/blob/master/README.md

MOUNT は、ビルド間でボリュームを共有し、依存関係管理ツールで再利用できるようにするために使用されます。

Dockerfile にはすでに FROM 命令が存在します。 Rocker を使用すると、複数の FROM 命令を追加できます。つまり、1 つの Rockerfile から複数のイメージを作成できます。最初の一連の命令は製品のすべての依存関係をビルドするために使用され、2 番目の一連の命令は製品をビルドするために使用されます。これにより、イメージ サイズを大幅に削減できます。

TAG はビルドのさまざまな段階でイメージを識別するために使用されるため、各イメージに手動でタグを付ける必要はありません。

PUSH はイメージをイメージ リポジトリにプッシュするために使用されます。

ATTACH を使用すると、中間ステップを対話的に実行できます。これはデバッグに非常に役立ちます。

Rocker を使用するには、まずマシンにインストールする必要があります。 Mac ユーザーの場合は、いくつかの brew コマンドを実行するだけです。

brew tap grammarly/tap$ brew install grammarly/tap/rocker

インストールが完了したら、Rockerfile を渡すことで Rocker を使用してイメージを構築できます。

python:2.7-slimWORKDIR /appADD ./appRUN から pip install -r requirements.txtEXPOSE 80ENV NAME WorldCMD \["python","app.Py"\]TAG shekhargulati/friendlyhello:{{ .VERSION }}PUSH shekhargulati/friendlyhello:{{ .VERSION }}

イメージをビルドして Docker Hub にプッシュするには、次のコマンドを実行します。

ロッカー d ビルド --push -var バージョン 1.0

GitHub アドレス: https://github.com/grammarly/rocker

ctop (コンテナのようなトップレベルインターフェース)

ctop は、複数のコンテナにわたるメトリックのリアルタイム ビューを提供する、最近使い始めたツールです。 Mac ユーザーの場合は、次のように brew を使用してインストールできます。

brew インストール ctop

インストールが完了したら、ctop の使用を開始できます。ここで、DOCKER_HOST 環境変数を設定する必要があります。

ctop コマンドを実行すると、すべてのコンテナのステータスを表示できます。

実行中のコンテナのみを表示する場合は、ctop -a コマンドを使用できます。

ctop は、ホスト上で実行されているコンテナを理解するのに役立つシンプルなツールです。詳細については、ctop のドキュメントを参照してください。

github.com/bcicen/ctop/blob/master/README.md

GitHub アドレス: https://github.com/bcicen/ctop

これで、非常に便利な 5 つの非常におすすめのオープンソース Docker ツールに関するこの記事は終了です。オープンソース Docker ツールに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker 可視化グラフィックツール portainer の詳細な説明
  • Docker可視化管理ツールであるDocker UIの使用
  • Docker 用ビジュアル UI 管理ツール Portainer のインストールと使用方法の分析
  • 3つのDockerグラフィカルツールの長所と短所の比較

<<:  CSSはヒントボックス、バブルボックス、三角形を作成します

>>:  MYSQL スロークエリとログの例の説明

推薦する

Vueモバイル端末の適応化問題の詳細説明

1. vue uiでプロジェクトを作成する 2. 基本設定項目を選択する 3. プロジェクトを実行す...

mysql8.0.19 winx64バージョンのインストール問題を解決する

MySQL は、スウェーデンの会社 MySQL AB によって開発されたオープンソースの小規模なリレ...

Nginx サービス クイック スタート チュートリアル

目次1. Nginx の紹介1. Nginx とは何ですか? 2. Nginx を使用する理由3. ...

Element UI で自動サイズ調整テキストエリアの高さを設定する方法

Element UIのtextarea input自動サイズに設定すると、テキストボックスのデフォル...

IE6 および IE7 で DIV コンテナの固定高さを使用するためのヒント

IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...

MySQLの指定されたテーブルからデータをエクスポートする例の詳細な説明

指定されたテーブルからデータをエクスポートするMySQLの詳細な説明必要とする: 1. テーブルはす...

LinuxのバックグラウンドでPythonプログラムを実行するいくつかの方法

1. 最初の方法は、unhup コマンドを直接使用してプログラムをバックグラウンドで実行することです...

vuex の補助関数 mapGetters の基本的な使い方の詳細な説明

mapGettersヘルパー関数mapGettersヘルパー関数は、ストア内のゲッターをローカルの計...

Ubuntu 18.04 のすべての Python ライブラリを一度にアップグレードする方法

ピップとは何かpip は、Python パッケージの検索、ダウンロード、インストール、アンインストー...

CSS を使用してマウスをホバーすることで他のタグのスタイルを変更するサンプルコード

序文:私の知る限り、現在 CSS で制御できるのは、タグをホバーしたときにそのタグの下の兄弟タグとサ...

mysql ワイルドカード (sql 高度なフィルタリング)

目次まず、値の一部と一致させるために使用される特殊文字であるワイルドカードについて簡単に紹介します。...

MySQL インデックスクエリ最適化スキルを習得するための記事

序文この記事では、DBA がいないチームが参考にできるように、MySQL の一般的な使用に関するヒン...

Linux ログ内のキーワードとその前後の情報を検索する方法の例

日常業務では、ログを表示する必要がよくあります。たとえば、 tail コマンドを使用してログをリアル...

WAMPにインストールするとMySQLが起動できるが、再起動後に起動できなくなる問題の解決方法

初めてwampをインストールした後、すべてのサービスが正常に使用できますが、再起動するとwampのア...

Node.jsで子プロセスを作成する方法

目次導入子プロセスプロセスを非同期的に作成する同期作成プロセス導入Node.js のメイン イベント...