非常に便利なオープンソース 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 スロークエリとログの例の説明

推薦する

浮遊要素によって引き起こされる問題と解決策の詳細な説明

1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...

LinuxサーバーにVueプロジェクトをデプロイする

ケース1 vue-cliはvue3プロジェクトをビルドし、プロジェクトをLinuxサーバーにアップロ...

Mysql SQL ステートメント演習 (50 問)

テーブル名とフィールド–1. 学生リスト学生 (s_id、s_name、s_birth、s_sex)...

JavaScript関数の詳細な紹介

任意の数のステートメントを関数を通じてカプセル化することができ、いつでもどこでも呼び出して実行できま...

HTML の 2 つのタブ ナビゲーション間の競合の解決方法

まず問題の説明から始めましょう:同じページで、1 つのタブに float:left が必要で、もう ...

CSS 前景と背景の自動カラーマッチング技術の紹介 (デモ)

1. カラーマッチング効果のプレビュー下の GIF に示すように、ボタンの背景色が徐々に薄くなると...

Vue プロジェクトでのスキャンコード決済の実装例 (デモ付き)

目次需要背景思考分析UI 表示始める1. 支払いコンポーネントテンプレートを作成する2. 支払いコン...

HTMLフロートの使用法の簡単な分析

float の使用例左サスペンション: float:left;右サスペンション: float:rig...

Amoeba を使用して MySQL データベースの読み取り/書き込み分離を実装する方法の詳細な説明

MySQL には読み取りと書き込みを分離するアーキテクチャが多数あります。Baidu のそれらのほと...

Zabbix で Windows のパフォーマンスを監視する方法

背景情報最近、Windows パフォーマンスに関する本を読み直しています。以前は SCOM 監視を使...

flexとは何か、flexレイアウト構文の詳細なチュートリアル

フレックスレイアウトFlex は Flexible Box の略で、「柔軟なレイアウト」を意味します...

VueはCanvasを使用してランダムなサイズで重なり合わない円を生成します

目次キャンバス関連文書エフェクト画像表示ケースの完全なコード親コンポーネントコードサブコンポーネント...

Webpack5-react スキャフォールディングをゼロから構築するための実装手順 (ソースコード付き)

目次ウェブパック5公式スタート建築ガイド構築を開始する依存する準備が完了したら、プロジェクトの構築を...

MySQL 5.7.9 シャットダウン構文例の詳細な説明

mysql-5.7.9 では、ついにシャットダウン構文が提供されます。以前は、MySQL データベー...

CentOS8でのDockerの使い方の詳しい説明

1. CentOS8でのDockerのインストール カール https://download.doc...