開発者の99%はDockerを理解していない

AIツール
この記事は約11分で読めます。

本動画では、開発者の99%が正しく理解していないとされるDockerについて、その本質的な概念と必要性を解説している。Dockerはアプリケーションとその依存関係を単一のポータブルなコンテナにパッケージ化することで、「自分の環境では動く」問題を解決する。特にAI開発においては、異なる環境間での動作保証、複数のAIエージェントの独立した実行、スケーリングの容易さといった利点がある。動画では、Dockerの基本概念(イメージ、Dockerファイル、コンテナ)から、仮想マシンとの違い、Kubernetesによるオーケストレーション、そして実際にDockerイメージを作成する実践的なチュートリアルまでを網羅的に説明している。

99% of Developers Don’t Get Docker
I'm hiring! Apply here: start a business with AI Agents? Go here: 30% faster with Vecta...

Dockerとは何か:開発者が知るべき本質

開発者の99%は、実はDockerを本当には理解していません。AI分野に長くいる方なら、Dockerという言葉は聞いたことがあるでしょう。しかし、ほとんどの人はDockerが何をするのか、実際に何なのかについて全く分かっていないのです。この動画では、Dockerの概念と、なぜすべてのAI開発者がそれを使う必要があるのかを明確に説明します。

手短に言いますと、私は現在2人目の動画編集者を募集しています。もしご存じの方がいるか、あるいはあなた自身が編集者であれば、ぜひ応募してください。リンクは動画の下にあります。

では、基本から説明しましょう。Dockerを使うと、アプリとそのすべての依存関係を単一のポータブルなコンテナにパッケージ化できます。これは明確な問題を解決します。つまり、あなたが構築したAIエージェント、あなたのAI SaaSが、すべてのマシンで同じように動作することを保証するのです。

AIエージェントの場合、そのコンテナにはrequirements.txtファイル、Python環境、ライブラリ、ツール、その他エージェントが必要とするものすべてが含まれる可能性があります。簡単に言えば、Dockerは「自分の環境では動く」問題に対する究極の解決策なのです。なぜなら、ソフトウェアを構築する際、バージョンのわずかな変更でもアプリ全体が壊れる可能性があるからです。

例えば、あなたのAIエンジンエージェントはローカルでは動作しますが、異なるPythonバージョンやCUDAを持つサーバーでは動作しません。これは特にチームで作業する際に痛みを伴います。Dockerをスキップすると、常にセットアップのバグ、遅いオンボーディング、脆弱なデプロイメントを意味する可能性があります。

Dockerは開発者にとって実際に痛みを伴う問題を解決するため、その収益は指数関数的なトレンドを示しています。そして、企業が大きくなればなるほど、Dockerを採用する可能性が高くなることが分かります。これらがDocker上で実行されているトップテクノロジーです。1位はNginx、2位はRedis、3位はPostgreSQLです。

これらすべての成功したプロジェクトがDockerを使用している理由は、すべてをパッケージ化するからです。つまり、一度設定すれば、Dockerを持つあらゆるマシンであなたのアプリは同じように動作します。互いに干渉し合うことなく、競合する要件を持つ複数のプロジェクトを並行して実行できます。また、複数のサーバーにわたって数十の同一のコピーを立ち上げることもできます。これは明らかにスケーリングに最適です。

Dockerの基本概念

あなたが理解しなければならない最初の概念は、Dockerイメージです。Dockerイメージは、アプリを実行するために必要なすべてを含む読み取り専用パッケージです。コード、ランタイム、すべての依存関係、プログラムを実行するために必要なものすべてが含まれます。これはDockerがコンテナを作成して起動するために使用するテンプレートです。心配しないでください。コンテナの概念についてはすぐに説明します。

DockerイメージはDocker Hubなどで共有およびダウンロードできます。つまり、環境を手動で再構築する必要はありません。これらがDockerイメージ管理に関して最も有用なコマンドです。しかし、LLMのおかげで、これらを実際に覚える必要はありません。ですから、気軽にこれをスクリーンショットするか、次にこれらのいずれかが必要になったときにLLMに尋ねてください。

あなたが理解しなければならない2番目の概念は、Dockerファイルです。これはDockerイメージを構築するための段階的な指示を含むテキストファイルです。Dockerファイルの各行は、ソフトウェアのインストール、ファイルのコピー、環境変数の設定など、特定のアクションを実行します。ここに例が見えますね。

Dockerはこれらの指示を上から下に読み取り、自動的に実行して最終的なDockerイメージを作成します。あなたが理解しなければならない3番目の、そして最も有名な概念は、コンテナです。そうですよね。これがDockerが有名な理由です。

Dockerコンテナは、隔離された環境でアプリケーションを実行するDockerイメージの実行中のインスタンスです。独自のファイルシステム、ネットワーク構成、プロセスを持っていますが、ホストマシンのオペレーティングシステムカーネルを共有します。これにより効率的なスケーリングが可能になります。

Dockerの実践的な活用

これらがDockerコンテナを管理するための最も有用なコマンドです。しかし、最も重要なコマンドはdocker composeです。これは、単一のYAMLファイルから複数のDockerコンテナを一緒に定義して実行できるツールです。より複雑なプロジェクトでは数分かかる可能性のあるコンテナを1つずつ起動する代わりに、必要なのは単一のファイル、docker-compose.yamlを書くことだけです。

そして、単一のターミナルコマンド、docker-compose upを実行して、アプリ全体とすべてのマイクロサービス、すべての依存関係、アプリが動作するために必要なすべてのサーバーを起動します。例えば、これによりAIスタック全体を単一のターミナルコマンドにまとめることができます。バックエンド、フロントエンドサービス、外部の独立したAIエージェント、AIアプリケーションに含まれるものすべてです。

Dockerのおかげで、スケーリングは簡単です。なぜなら、より多くのトラフィックを処理するために、多くのサーバーにわたって複数の同一のDockerコンテナを実行できるからです。アプリがTwitterでバイラルになるなど、需要が急増した場合、すぐにより多くのコンテナを立ち上げ、トラフィックが減少したときにそれらをシャットダウンできます。

自動的にスケーリングを管理し、実行中のすべてのコンテナに受信リクエストを分散するオーケストレーションツールがあります。これにより、あなた自身が数十のDockerコンテナを管理する必要がありません。おそらく最も有名なのはKubernetesです。これは、多くのサーバーにわたって多くのコンテナ(Dockerである必要はありません)を自動的に管理するオーケストレーションツールです。

これがKubernetesが複雑であるという評判を持ち、多くのジュニアエンジニアがそれを恐れる理由です。しかし、実際の価値を提供します。なぜなら、自動デプロイメント、スケーリング、ロードバランシングによって大量のコンテナを手動で管理する問題を解決するからです。コンテナがクラッシュしたり、サーバーが故障したりした場合、アプリケーションを実行し続けるためにコンテナを自動的に再起動します。

DockerとKubernetesの市場シェアを見ると、これが明らかな独占であることが分かります。Docker単体でコンテナ化に関して88%の市場シェアを持っています。そしてその上にKubernetesを加えると、97%くらいになります。つまり、最後まで視聴して実際にDockerを学べば、他のツールを学ぶことを心配する必要はありません。これだけで十分です。だから注意して見てください。

仮想マシンとの比較

さて、あなたは「わかったよ、デビッド。でも、なぜ仮想マシンを使わないの?違いは何?」と思っているかもしれません。仮想マシンは完全なオペレーティングシステムを実行し、ギガバイト単位のディスクスペースとメモリを必要としますが、これらはすべて無料ではありません。

一方、Dockerはサーバーのリソースを共有し、アプリケーションのみをパッケージ化します。これによりDockerコンテナははるかに軽量になります。複数の仮想マシンを管理するよりも、コンテナを使用して多くの環境で同じアプリを実行する方がはるかに簡単です。

これでAIエージェントの話になります。今まで話したことすべてを考えると、DockerがAIにとって有用である理由を理解するのは難しくありません。ローカルマシンでAIモデルを実行またはファインチューニングするために必要なすべてをパッケージ化できます。そして、各AIエージェントを独自のコンテナに隔離し、複数のAIエージェントを実行する際の競合を防ぎます。

Dockerイメージの作成実践

さて、独自のDockerイメージを作成する方法をお見せしましょう。実際には非常に簡単です。これがDockerに慣れるための最も簡単な方法です。数分で終わり、ほとんどの摩擦を突破できます。では、これから私がすることに従ってください。

まず、新しいターミナルを開きます。ちなみに、VS Code、Cursor、Windsurf、好きなIDEを使用できます。ターミナルを開いて新しいフォルダを作成します。mkdirと入力し、フォルダの名前hello-dockerと入力します。完了、フォルダが作成されました。右側に見えるように、そこにあります。今は空です。

そのフォルダにcdする必要があります。つまり、開く必要があります。cd heと入力します。そして、タブを押して名前を自動入力できます。できました。エンターを押します。今、フォルダの中にいることが分かります。素晴らしい。clearと入力してターミナルをリセットしましょう。

次のステップは、Pythonファイルを作成することです。フォルダ内で、新しいファイルをクリックしましょう。ちなみに、これはIDE経由で手動でも、ターミナル経由でも可能です。私はこれをapp.pyと名付けます。完了です。

このファイル内で、単一のprint文を実行します。print hello docker。これが私の最初のイメージです。想像できる最もシンプルなPythonファイルです。command Sまたは、Windowsの場合はcontrol Sで保存してください。

次に、Dockerファイルを作成しましょう。これはフォルダ内の別のファイルです。右クリック、新しいファイル、そしてDockerfileと名付けるだけです。拡張子なし、その後に何もなし、スペースなし、大文字のDでDockerfileだけです。

このファイル内に、一連の指示を貼り付けます。各行が何をするか説明しましょう。最初の行は、Dockerに使用すべきイメージを指示します。この場合、Python 3.12の軽量バージョンをベースイメージとして使用します。これにより、LinuxとPythonの両方がプリインストールされます。

2行目は、コンテナ内の作業ディレクトリを/appに設定します。その後のすべてのコメントはそのディレクトリで実行されます。このDockerファイルの3行目は、ローカルのapp.py、つまりこの超シンプルなPythonスクリプトを、コンテナの現在のディレクトリにコピーします。つまり、/appフォルダです。

Dockerファイルの最後の行は、デフォルトコマンドを定義します。コンテナが起動したとき、最初に実行すべきコマンドは何か。この場合、それはpython app.pyを実行することです。これは文字通り、あなたがターミナルを開いて自分でそれをターミナルに入力することと同じです。

Dockerファイルを設定したら、必ず保存してください。次のステップは、イメージをビルドすることです。これはこのターミナルコマンドで実行できます。ターミナルを開いて、docker build -t hello-docker .と入力しましょう。これはすべてを意味します。エンターを押します。

ご覧のように、エラーが発生しました。理由は簡単です。Dockerを実行していません。dockerと入力すれば、Docker Desktopがインストールされている場合、Docker Desktopが開きます。インストールされていない場合は、GoogleにDocker Desktopと入力し、最初のリンクをクリックして、単にDownload Docker Desktopをクリックしてください。

完全に無料です。有料プランは必要ありません。それは企業やエンタープライズ向けです。Docker Desktopの実際の外観はこんな感じです。グラフィカルユーザーインターフェースでDockerを操作できる、シンプルで良いアプリです。すべてのターミナルコマンドを覚える必要はありません。Docker Desktopがインストールされていれば、イメージやコンテナを非常に簡単に管理できます。

エラーが発生した理由は、Docker Desktopが実行されていなかったからです。今このコマンドを再実行すれば、エラーはありません。イメージがビルドされているのが分かります。私が使用しているIDEのCursorが、Docker Desktopにアクセスする許可を取得しようとしています。それを許可する必要があります。そして、このようにして、最初のDockerイメージのビルドを開始しました。

そして、そこにあります。20秒後、いや15秒後くらいでしょうか、イメージがビルドされました。clearと入力してターミナルをリセットしましょう。残っているのはコンテナを実行することだけです。再びターミナルを開いて、docker run hello-dockerと実行しましょう。エンターを押すと、完了です。

これがPythonスクリプトの実行結果です。この場合は単純なprint文ですが、ターミナル内で実行されたのではありません。Dockerコンテナで実行されました。

まとめ

これが、皆さん、Dockerの全体的なアイデアです。すべての依存関係、すべてのPython環境、バージョン、パッケージ、ライブラリ、必要なすべてのものと一緒にプログラム全体を、世界中の何百万ものデバイスに共有およびデプロイできる単一の素晴らしいDockerコンテナにパッケージ化できます。

あなたとは全く異なるコンピュータを持つ人々に配布しても、それでも動作します。これがDockerです。この動画が価値あるものだと感じていただければ幸いです。このようなより詳細なコーディングと技術チュートリアルを作成してほしい場合は、下にコメントして、必ず購読してください。それでは、視聴していただきありがとうございました。素晴らしく生産的な一週間をお過ごしください。また会いましょう。

コメント

タイトルとURLをコピーしました