Docker入門:コンテナ技術の基本からDocker Composeまで

AIを知りたい
AIの開発環境で「Docker」がよく使われていると聞いたのですが、どんな技術ですか?

AIエンジニア
Dockerはアプリケーションをコンテナという単位でパッケージ化する技術です。OS、ライブラリ、コードを全てまとめて「コンテナ」にするので、「自分の環境では動くのに本番で動かない」という問題を解消できます。AI開発ではPythonのバージョンやライブラリの依存関係が複雑なので特に重宝されます。

AIを知りたい
仮想マシン(VM)とは何が違うのですか?

AIエンジニア
VMはOS全体を仮想化するため起動が遅くリソース消費も大きいですが、DockerはホストOSのカーネルを共有する軽量な仮想化です。起動は数秒、メモリ消費も少ないです。1台のサーバーに数十のコンテナを同時に動かすことも可能で、マイクロサービスやCI/CDに最適です。
Docker(ドッカー)とは、コンテナ型仮想化技術を使ってアプリケーションの開発・配布・実行を効率化するオープンソースプラットフォームです。
2013年にリリースされて以来、開発環境の標準ツールとなりました。Dockerfileでインフラをコード化(IaC)し、Docker Hubでイメージを共有、Docker Composeで複数コンテナを管理できます。
Dockerの基本概念

AIを知りたい
イメージとコンテナの違いがよくわからないのですが。

AIエンジニア
イメージはコンテナの「設計図」で、読み取り専用のテンプレートです。コンテナはイメージから作成した「実行中のインスタンス」です。クラスとオブジェクトの関係に似ています。一つのイメージから何個でもコンテナを作れます。

AIを知りたい
Dockerfileとは何ですか?

AIエンジニア
Dockerfileはイメージの作り方を記述したテキストファイルです。ベースイメージの指定、パッケージのインストール、ファイルのコピー、起動コマンドなどを記述します。「FROM python:3.11」「RUN pip install torch」のような命令を書いていきます。
| 概念 | 説明 | 例え |
|---|---|---|
| Dockerfile | イメージの作成手順書 | レシピ |
| イメージ | 実行環境のテンプレート | 料理の写真 |
| コンテナ | イメージの実行インスタンス | 実際の料理 |
| Docker Hub | イメージの共有リポジトリ | レシピサイト |
| ボリューム | 永続データの保存領域 | 冷蔵庫 |
Docker Composeで複数コンテナを管理

AIを知りたい
Docker Composeとは何ですか?

AIエンジニア
Docker Composeは複数のコンテナをまとめて定義・管理するツールです。例えばAIアプリならWebサーバー、APIサーバー、データベース、Redis等を一つのdocker-compose.ymlファイルで定義し、「docker compose up」一つで全て起動できます。

AIを知りたい
AI開発でDockerを使う具体的なメリットは何ですか?

AIエンジニア
CUDA、PyTorch、TensorFlowなどの依存関係を完全に再現できることが最大のメリットです。NVIDIAが公式のGPU対応Dockerイメージを提供しているので、GPU環境のセットアップが格段に楽になります。チーム全員が同じ環境で開発できるのも大きな利点です。
まとめ
Dockerはアプリケーションの実行環境をコンテナとしてパッケージ化する必須ツールです。AI開発では特にGPU環境やライブラリ依存関係の管理に威力を発揮します。Dockerfileでイメージを定義、Docker Composeで複数コンテナを管理するワークフローを身につけましょう。
