1行定義
Dockerとは、アプリケーションと実行に必要なライブラリや設定をコンテナという単位にまとめ、別のマシンでも同じように動かせるようにするソフトウェアのことです。
くわしく
Dockerは、ソフトウェアを「コンテナ」という箱に詰めて動かすための仕組みです。箱には、プログラム本体だけでなく、動かすのに必要なライブラリとそのバージョン、設定までまとめて入ります。Dockerが動くマシンなら、手元のパソコンでもクラウドのサーバーでも、同じ箱をほぼ同じように動かせます。
AIプロジェクトで使われる理由
機械学習のプログラムは、Pythonのライブラリや深層学習のフレームワークなど、多くの部品の組み合わせで動きます。部品のバージョンが少し違うだけで、動かなくなったり結果が変わったりします。「開発者のパソコンでは動くのに、本番のサーバーでは動かない」問題が起きやすい分野です。
Dockerで実行環境ごとまとめれば、開発・検証・本番で同じ環境を再現できます。学習済みモデルをWeb APIとして提供するときも、推論のプログラムをコンテナにして配置する方法がよく使われます。MLOpsでも、実行環境をそろえて再現性を確保する手段の1つとして使われます。
主な用語
- イメージ:コンテナを作るための読み取り専用のテンプレートです。一度作ると変更できません。
- コンテナ:イメージから起動した、実際に動いている実行環境です。
- Dockerfile:イメージを作る手順を書いたテキストファイルです。
- レジストリ:イメージを保管して配布する場所です。公開のDocker Hubのほか、組織専用のものも用意できます。
仮想マシンとの違い
仮想マシンは、OSを丸ごと含む仮想的なコンピュータを動かします。コンテナはホストOSのカーネルを共有し、アプリケーションと必要な部品だけを分けて動かします。そのため一般に軽く、起動も速くなります。一方で、隔離の度合いは、OSごと分ける仮想マシンのほうが高いとされます。
覚え方
「環境ごと箱に詰めて運ぶから、どこでも同じに動く」と覚えます。
G検定での出題
出題のされ方
開発と本番で同じ実行環境を再現できるというAI開発での利点や、ホストOSのカーネルを共有するコンテナと仮想マシンとの違い、MLOpsでの役割が問われます。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
Dockerでは、元にするイメージや追加するライブラリなど、イメージを作る手順をDockerfileというテキストファイルに書いておく。
答えを見る
答え ◯ 正しい
手順をファイルに残すため、同じ環境を何度でも作り直せます。Dockerfileをバージョン管理すれば、環境を変えた履歴も追えます。
-
起動したコンテナの中で追加のライブラリを入れると、その変更は元になったイメージにも自動で書き込まれる。
答えを見る
答え × 誤り
イメージは一度作ると変更できない読み取り専用のテンプレートです。コンテナでの変更はそのコンテナの中にとどまるため、環境を変えるときはDockerfileを直してイメージを作り直します。
-
Dockerのコンテナからはホストのコンピュータに載ったGPUを使えないため、深層学習の学習はコンテナの外で行う必要がある。
答えを見る
答え × 誤り
NVIDIAのGPUであれば、ドライバとNVIDIA Container Toolkitを入れたうえで、コンテナの起動時に--gpusオプションを指定すると使えます。深層学習の環境をコンテナで配る例は多くあります。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目35 AIプロジェクトの進め方)
- Docker Docs, What is Docker?(Docker overview) (Docker objects(Images、Containers)、Docker registries)
- Docker Docs, What is an image?
- Docker Docs, GPU access