Gordon を使用してアプリをコンテナ化し、コンテナを操作する

最近では、ほぼすべてのテクノロジー企業がAIを自社のアプリやワークフローに統合する方法を模索していますが、Dockerも例外ではありません。彼らは、いくつかの印象的なAI機能を製品全体に展開しています。これはDockerキャプテンとしての私の最初の投稿であり、この投稿では、私の意見ではあまり注目されていない機能、つまりDocker DesktopとCLIに組み込まれている DockerのAIエージェントGordon (Docker AIとも呼ばれます)にスポットライトを当てたいと思います。

Gordonは、アプリケーションのコンテナ化に関して非常に役立ちます。アプリをコンテナとしてパッケージ化する方法を理解するのに役立つだけでなく、依存関係、ランタイム設定、および開発者の日常的な認知負荷に追加されるその他の要素を把握するオーバーヘッドも削減します。一番の魅力は?ゴードンは、ただ返答であなたを導くだけではありません。また、必要なファイルを生成または更新することもできます。

問題:アプリのコンテナ化とコンテナの最適化は必ずしも簡単ではありません

アプリのコンテナ化は、作業内容によって、非常に単純なものから少し難しいものまでさまざまです。アプリに Node.js、Python、.NET Core などの 1 つのランタイム があり、 依存関係が明確に定義 され、 外部サービスがない場合、簡単に実行できます。

基本的なDockerfileを使用すると、通常、それほど手間をかけずに稼働させることができます。しかし 、バックエンド、フロントエンド、データベース、キャッシングレイヤーなど、複雑さが増し始めると、マルチコンテナアプリが必要になります。この時点で、追加の Dockerfile 構成と、場合によっては Docker Compose セットアップを扱っている可能性があります。そこから、物事を進めるのが難しくなり始めることがあります。

これがゴードンの輝きです。アプリのコンテナ化に役立ち、マルチサービスのコンテナアプリのセットアップも処理でき、必要なものをガイドし、Dockerfilesやdocker-composeなどのサポート構成ファイルを生成して作業を進めることができます。

コンテナの最適化も頭痛の種になる可能性があります

コンテナ化だけでなく、パフォーマンス、セキュリティ、イメージサイズについても コンテナを最適化する 必要があります。そして、それに直面しましょう、最適化は面倒な場合があります。使用するベース画像、スリム化する方法、不要なレイヤーを避ける方法などを知る必要があります。

ゴードンはここでも助けることができます。最適化の提案を提供し、マルチステージ ビルドや開発依存関係の削除などのベスト プラクティスを適用する方法を示し、より無駄のない、より安全なイメージを作成するのに役立ちます。

なぜ汎用のジェネレーティブAIを使わないのか?

確かに、ChatGPT、Claude、Geminiなどの汎用AIツールは素晴らしく、私はそれらを定期的に使用しています。しかし、コンテナに関しては、正確で効率的な支援に必要な コンテキストが不足している 可能性があります。一方、Gordonは Docker専用に構築されています。Docker のエコシステムにアクセスでき、Docker のドキュメント、ベスト プラクティス、Docker ツールのニュアンスについてトレーニングを受けています。つまり、その推奨事項は正確で、最新の基準に準拠している可能性が高くなります。

ゴードンのウォークスルー

Gordonは、アプリケーションのコンテナ化、コンテナの最適化などを支援します。ゴードンはまだベータ機能です。Gordonの使用を開始するには、Docker Desktopバージョン( 4)が必要です。38 以降。Gordonは大規模言語モデル(LLM)を搭載しており、プロンプトとレスポンスを超えて、AIエージェントとして特定のタスクを実行できます。Gordon は、許可を与えると、ローカル ファイルとローカル イメージにアクセスできます。タスクに必要な場合は、アクセスを求められます。

この投稿で示す例は、1つの作業セッションに基づいていることに注意してください。それでは、ゴードンの探索を始めましょう。

Gordon / Docker AIの有効化

Gordonをオンにするには、次のスクリーンショットに示すように、 Settings > Beta features に移動し、 Enable Docker AI ボックスをオンにします。

「Docker AI を有効にする」オプションが強調表示された Docker Desktop Beta 設定。

図 1:ベータ機能でDockerAIを有効にする場所のスクリーンショット

条件に同意します。Docker Desktop の AI には 2 つの形式があります。最初のものはDockerデスクトップUIを介して行われ、Gordonとして知られています。2 番目のオプションは Docker AI です。Docker AI には、Docker CLI を使用してアクセスします。アクティブ化する方法は、CLI に Docker AI と入力することです。これについては、このブログ記事の後半で説明します。  

Docker AI の利用規約に同意するダイアログ ボックスのスクリーンショット。

図 2: Docker AI の利用規約に同意するダイアログ ボックスのスクリーンショット

Docker Desktop での Gordon の探索

これで、GordonがDockerデスクトップUIに表示されます。ここでは、他のジェネレーティブAIツールと同じようにプロンプトを出すことができます。Gordon には、作業を開始するために使用できる例もあります。

Docker Desktop 全体で Gordon にアクセスするには、次のスクリーンショットに示すように AI アイコンをクリックします。

GordonのAIアイコンを表示するDockerデスクトップインターフェース。

図 3:GordonのAIアイコンを示すDockerDesktopインターフェイスのスクリーンショット

AIアイコンをクリックすると、次のスクリーンショットに示すように、Gordonプロンプトボックスが提案されたプロンプトとともに表示されます。提案は、AIが隣にいるオブジェクトに基づいて変化し、コンテキストを認識します。

Docker Desktop UI の Gordon の提案プロンプト ボックス。

図 4: Docker Desktop UI の Gordon の提案プロンプト ボックスを示すスクリーンショット

これは、Docker Desktopのどの領域にいるかに基づいてコンテキストを認識するDocker AIの提案の別の例です。 

コンテキスト固有の推奨事項を提供する Docker AI のスクリーンショット。

 図 5:Docker AIコンテキスト固有の提案を示すスクリーンショット 

Gordon のもう 1 つの一般的な使用例は、ローカル画像を一覧表示し、AI を使用してそれらを操作することです。これは、次の一連のスクリーンショットで確認できます。Gordonは、ローカル画像を表示する前に許可を求めることに注意してください。

Gordon は、ローカル コンテナー イメージへのアクセスを求めています。

図 6:ゴードンがローカル画像を参照しているスクリーンショット 

また、Gordon にアクションを実行するように促すこともできます。次のスクリーンショットに示すように、私はゴードンに私のイメージの1つを実行するように頼みました。

Gordon は、コンテナイメージの実行を求めるユーザーとのインターフェースです。

図 7: Gordon プロンプトを示すスクリーンショット 

アクションを実行できない場合は、あなたを助けようとします。 

失敗したリクエストに対して役立つエラーメッセージを返す Gordon の UI。

図 8: 失敗した要求に対する Gordon のプロンプト応答を示すスクリーンショット 

Gordon のもう 1 つの優れた使用法は、コンテナー イメージを説明することです。これを求めると、次のスクリーンショットに示すように、GordonはDockerfileがあるディレクトリとそれにアクセスするためのアクセス許可を選択するように求めます。

アプリケーションディレクトリへの Gordon アクセスを許可するプロンプト。

図 9: 特定のディレクトリ アクセスに対する Gordon の要求を示すスクリーンショット 

Dockerfile があるディレクトリへのアクセス権を付与すると、Dockerfile の内容が分類されます。 

Dockerfile 構造の分析を表示する Gordon 氏。

図 10: Dockerfile の説明に対する Gordon の応答を示すスクリーンショット 

次のスクリーンショットに示すように、Dockerfile の内容を表示するように Gordon に求めるプロンプトをフォローアップしました。次のスクリーンショットに示すように、その内容を説明するのに良い仕事をしました。

Gordon AIによるDockerfileコマンドの説明。

図 11:Dockerfileの内容に関するGordonの応答を示すスクリーンショット

Docker Desktop CLI での Gordon の探索

CLIでGordonを簡単に見てみましょう。Gordon は、CLI では Docker AI と呼ばれます。Docker AI を使用するには、次のスクリーンショットに示すように Docker CLI を起動する必要があります。 

「docker ai」コマンドが表示された CLI ウィンドウ。

図 12:CLIからDocker AIを起動する方法を示すスクリーンショット 

CLIで「docker ai」と入力すると、チャットエクスペリエンスに移動し、Gordonにプロンプトを送信できます。私の例では、ゴードンに私の地元の画像の1つについて尋ねました。私に許可を求めたことがわかります。 

Docker AI によるローカル イメージへのアクセスのための CLI プロンプト。

図 13: Docker CLI のアクセス要求を示すスクリーンショット

次に、次のスクリーンショットに示すように、Docker AIにすべてのローカルイメージを一覧表示するように依頼しました。 

Docker AI を介したターミナル内のローカル Docker イメージを示す出力。

図 14: ローカル イメージを表示するための Docker CLI の応答を示すスクリーンショット 

次に、Docker AIを使用してイメージをプルするテストを行いました。次のスクリーンショットでわかるように、Gordonは私のためにnodeJSイメージを引っ張ってきました!

ノードイメージの正常なプルを確認する CLI 出力。

図 15:DockerCLIがnodeJSイメージをプルしているスクリーンショット

Gordon を使用したアプリケーションのコンテナ化

次に、Gordon を使用してアプリケーションをコンテナー化するエクスペリエンスを探ってみましょう。

まず、アプリケーションのコンテナ化の例をクリックしてください。次に、Gordonは、アプリケーションコードがあるディレクトリを指定するように求めました。 

Gordonは、コンテナ化のためにユーザーのアプリディレクトリへのアクセスを要求しています。

図 16: アプリケーションをコンテナ化するためにディレクトリへのアクセスを有効にする場所を示すスクリーンショット 

私はそれを私のアプリディレクトリに向け、許可を与えました。その後、アプリの分析とコンテナ化が始まりました。それは言語を拾い上げ、私のアプリのREADMEファイルを読み始めました。

Gordonインターフェースは、アプリのファイルと依存関係を分析します。

図 17: Gordon がアプリの分析とコンテナ化を開始したスクリーンショット 

アプリが JavaScript で記述され、パッケージと依存関係を通じて処理されたことがわかります。

Docker コンテナ化の進行状況を示すスクリーンショット。

図 18: Gordon 処理の最終ステップを示すスクリーンショット

Gordonは、私のアプリにバックエンド、フロントエンド、データベースがあることを理解しており、このことからDocker作成ファイルが必要であることを知っています。

コンテナ化タスクが正常に完了したことを示すインターフェイス。

図 19: Dockerfile を完了するための手順が正常に完了したことを示すスクリーンショット

次のスクリーンショットから、アプリに必要な Docker 関連ファイルを確認できます。ゴードンはこれらすべてを作成しました。

Gordon が作成した Dockerfile と設定ファイルのリスト。

図 20:Gordonから生成されたファイルを示すスクリーンショット 

GordonはDockerfile(左側)とCompose yamlファイル(右側)を作成し、このアプリケーションにはPostgres DBが必要であることにも気づきました。

Gordon によって作成された Dockerfile と Docker Compose YAML。

図 21: Gordon から生成された Dockerfile と Compose yaml ファイルを示すスクリーンショット

次に、さらに一歩進んで、「このアプリケーションを compose でビルドして実行できますか?」というプロンプトを使用して、アプリケーションのコンテナをビルドして実行するように Gordon に依頼しました。Docker Compose ファイルを作成し、イメージをビルドし、コンテナを実行しました。

Docker Compose を使用してコンテナ化されたアプリを起動して実行しています。

図 22:Gordonの完成したコンテナを示すスクリーンショット

結論

Dockerに関する有用な洞察を得て、DockerDesktopであまり知られていないAI機能の1つを見つけたことを願っています。Gordon とは何か、ChatGPT、Claude、Gemini などの汎用生成 AI ツールとの比較を探り、アプリケーションのコンテナ化やローカル イメージの操作などのユースケースについて説明しました。また、Gordonがコンテナを扱う開発者やITプロフェッショナルをどのようにサポートできるかについても触れました。まだ行っていない場合は、Gordon を有効にしてテスト実行することをお勧めします。読んでくれてありがとう、そして近日公開予定のブログ投稿にご期待ください。

投稿カテゴリ

関連記事