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

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で複数コンテナを管理するワークフローを身につけましょう。

関連記事