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

推薦する

Linux と Windows でスケジュールされたタスクを設定する方法

目次リナックス1. crontabの基本的な使い方2. ログを有効にする3. スケジュールされたタス...

iframe に関するいくつかの発見と考察

この物語は、今日の予期せぬ発見から始まります。同社には複数のウェブサイトがある。友達リンクにはお互い...

Linux でファイルの作成時間を取得する方法と実践的なチュートリアル

背景ファイルの作成時刻を取得する必要がある場合があります。例えば: 「xtrabackup スキーマ...

Windows Server 2016 で Flash を有効にする方法

最近、VMware Horizo​​n を導入してテストしましたが、そのコンソールにはデフォルトで ...

Dockerコマンドは一般ユーザーが実行できるように実装されている

dockerをインストールすると、通常はdockerユーザーグループが作成されます。ステップ2: 現...

HTML における相対と絶対の使用法と違いの詳細な説明

HTML における相対と絶対の違い: 正直に言うと、HTML は世界で最もシンプルな言語です。タグ言...

MySQL で重複を削除するには、distinct または group by を使用する必要がありますか?

序文group by と distinctive のパフォーマンス比較について: インターネット上の...

Linux でも利用できる人気の Windows アプリ 10 選

データ分析会社Net Market Shareによると、Linuxデスクトップオペレーティングシステ...

CSS3で実装されたスライドメニュー

結果:実装コード: <!DOCTYPE html><html class=&quo...

MySQL 5.7.30 のインストールとアップグレードの問題に関する詳細なチュートリアル

くさびコンピュータにインストールされている MySQL のバージョンが比較的古く、おそらくバージョン...

Linux の Docker コンテナで bash を終了する 2 つの方法

bash を終了する場合は、次の 2 つのオプションがあります。最初のもの: Ctrl + d を押...

nginx 設定場所方法の概要

位置一致順序1. 「=」プレフィックス命令マッチング、マッチングが成功したら他のマッチングを停止2....

VMware12 に CentOS8 をインストールする方法 (VM 仮想マシンに CentOS8 をインストールするチュートリアル)

数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...

Dockerを使用してRedisクラスターを構築する方法

目次1. Redis Dockerベースイメージを作成する2. Redisノードイメージを作成する3...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...