最近では、ほぼすべてのテクノロジー企業が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
ボックスをオンにします。

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

図 2: Docker AI の利用規約に同意するダイアログ ボックスのスクリーンショット
Docker Desktop での Gordon の探索
これで、GordonがDockerデスクトップUIに表示されます。ここでは、他のジェネレーティブAIツールと同じようにプロンプトを出すことができます。Gordon には、作業を開始するために使用できる例もあります。
Docker Desktop 全体で Gordon にアクセスするには、次のスクリーンショットに示すように AI アイコンをクリックします。

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

図 4: Docker Desktop UI の Gordon の提案プロンプト ボックスを示すスクリーンショット
これは、Docker Desktopのどの領域にいるかに基づいてコンテキストを認識するDocker AIの提案の別の例です。

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

図 6:ゴードンがローカル画像を参照しているスクリーンショット
また、Gordon にアクションを実行するように促すこともできます。次のスクリーンショットに示すように、私はゴードンに私のイメージの1つを実行するように頼みました。

図 7: Gordon プロンプトを示すスクリーンショット
アクションを実行できない場合は、あなたを助けようとします。

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

図 9: 特定のディレクトリ アクセスに対する Gordon の要求を示すスクリーンショット
Dockerfile があるディレクトリへのアクセス権を付与すると、Dockerfile の内容が分類されます。

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

図 11:Dockerfileの内容に関するGordonの応答を示すスクリーンショット
Docker Desktop CLI での Gordon の探索
CLIでGordonを簡単に見てみましょう。Gordon は、CLI では Docker AI と呼ばれます。Docker AI を使用するには、次のスクリーンショットに示すように Docker CLI を起動する必要があります。

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

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

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

図 15:DockerCLIがnodeJSイメージをプルしているスクリーンショット
Gordon を使用したアプリケーションのコンテナ化
次に、Gordon を使用してアプリケーションをコンテナー化するエクスペリエンスを探ってみましょう。
まず、アプリケーションのコンテナ化の例をクリックしてください。次に、Gordonは、アプリケーションコードがあるディレクトリを指定するように求めました。

図 16: アプリケーションをコンテナ化するためにディレクトリへのアクセスを有効にする場所を示すスクリーンショット
私はそれを私のアプリディレクトリに向け、許可を与えました。その後、アプリの分析とコンテナ化が始まりました。それは言語を拾い上げ、私のアプリのREADMEファイルを読み始めました。

図 17: Gordon がアプリの分析とコンテナ化を開始したスクリーンショット
アプリが JavaScript で記述され、パッケージと依存関係を通じて処理されたことがわかります。

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

図 19: Dockerfile を完了するための手順が正常に完了したことを示すスクリーンショット
次のスクリーンショットから、アプリに必要な Docker 関連ファイルを確認できます。ゴードンはこれらすべてを作成しました。

図 20:Gordonから生成されたファイルを示すスクリーンショット
GordonはDockerfile(左側)とCompose yamlファイル(右側)を作成し、このアプリケーションにはPostgres DBが必要であることにも気づきました。

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

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