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

推薦する

HTML ページジャンプのパラメータ渡しの問題

効果は以下のとおりです。ページジャンプボタンをクリックした後 対応する値はページ b で取得できます...

Linuxは、単一のIPをバインドするためにデュアルネットワークカードを実装するためにボンドを使用します。サンプルコード

ネットワークの高可用性を実現するには、複数のネットワーク カードを仮想ネットワーク カードにバインド...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

XHTMLタグは適切に使用する必要があります

<br />123WORDPRESS.COM の以前のチュートリアルでは、Web ページ...

jQueryはショッピングカートの完全な機能を実現します

この記事では、ショッピングカートの完全な機能を実現するためのjQueryの具体的なコードを参考までに...

dockerを使用してdubboプロジェクトをデプロイする方法

1. まず、Springbootを使用して簡単なDubboテストプログラムを構築し、関連する依存関係...

Docker で Node プロジェクトをビルドしてデプロイする方法

目次DockerとはクライアントサイドDocker基本的なDocker操作画像名画像をプルするその他...

MySQLのインストールと設定方法のグラフィックチュートリアル(CentOS7)

1. システム環境[root@localhost ホーム]# cat /etc/redhat-re...

Apache Log4j2 が核レベルの脆弱性と迅速な修正を報告

Apache Log4j2 が核レベルの脆弱性を報告し、スタックリーダーの友人たちは大騒ぎになりまし...

ゲーム着物メモ問題の簡単な分析

本日、ゲームを再起動した後、バックアップしたデータをターゲットデータベースにインポートできないことが...

MacOS に MySQL 8.0 をインストールして MySQL にログインする方法

公式チュートリアルに従って、インストール パッケージをダウンロードし、[インストール] をクリックし...

Javascript イベントキャプチャとバブリングメソッドの詳細な説明

目次1. イベント処理モデル1. イベントバブリング(1)3つのdiv要素にイベントをバインドする(...

ウェブページ作成時のHTMLタグの使用に注意してください

この記事では、Web ページの作成を学習するときに注意すべき HTML タグに関するいくつかの問題を...

webpack -v エラー解決

背景webpackのバージョンを確認したいのですが、webpack -vを実行するとエラーが報告され...