Last updated on
UbuntuでDockerを使い始める基本:AI環境向け
この記事の流れ
- この記事は誰向けか
- この記事でわかること
- 1. Dockerとは
- 1.1 なぜDockerが便利なのか
- 1.2 コンテナと仮想マシンの違い
- 1.3 AI開発でDockerが使われる理由
- 2. インストール
- 2.1 インストール手順
- 2.2 sudoなしでDockerを使う設定
- 2.3 動作確認
- 3. 基本コマンド
- 3.1 イメージの操作
- 3.2 コンテナの操作
- 3.3 コマンド早見表
- 4. Dockerfileの書き方
- 4.1 基本的なDockerfile
- 4.2 主要な命令
- 4.3 ビルドと実行
- 5. AI開発での活用例
- 5.1 Jupyter Notebook環境
- 5.2 GPU対応コンテナ
- 6. よくある質問
- Q. Docker DesktopとDocker Engineの違いは?
- Q. コンテナのデータは永続化されますか?
- Q. ディスク容量が圧迫されています。
- Q. docker: permission denied と出ます。
- まとめ
- この記事を書いた人
- あわせて読みたい
この記事は誰向けか
UbuntuでDockerを使い始めたい方、AI開発で環境を分離したい方に向けて、Dockerの基本から実践的な使い方までを1記事にまとめました。
この記事でわかること
- Dockerとは何か、なぜAI開発に便利なのか
- Ubuntuへのインストール手順
- 基本コマンド(run, build, compose)
- Dockerfileの書き方
- AI開発での活用例
- よくあるトラブルと対処法
1. Dockerとは
【結論】Dockerは、アプリとその依存関係を「コンテナ」にまとめて、どこでも同じ環境で動かせるツールです。
1.1 なぜDockerが便利なのか
| 課題 | Dockerなし | Dockerあり |
|---|---|---|
| 環境の違い | 「私のPCでは動く」 | どこでも同じ環境 |
| 依存関係の衝突 | Python 3.10と3.12が共存できない | コンテナごとに独立 |
| セットアップ | 手動でツールをインストール | docker run 1行で完了 |
| クリーンアップ | アンインストールが面倒 | コンテナを削除するだけ |
1.2 コンテナと仮想マシンの違い
| 項目 | コンテナ | 仮想マシン |
|---|---|---|
| 起動速度 | 秒単位 | 分単位 |
| リソース | 軽い | 重い |
| OS | ホストOSを共有 | ゲストOSが必要 |
| 隔離性 | 中 | 高 |
| 用途 | アプリ実行 | 完全なOS環境 |
1.3 AI開発でDockerが使われる理由
- CUDA/cuDNNのバージョン管理 — コンテナごとに異なるバージョンを使用
- フレームワークの切り替え — PyTorch、TensorFlowを独立環境で運用
- 再現性 — 研究環境を他者と共有しやすい
- 本番環境との一致 — 開発と本番で同じコンテナを使用
2. インストール
【結論】Docker公式リポジトリからインストールするのが推奨です。
2.1 インストール手順
# 必要なパッケージのインストール
sudo apt update
sudo apt install ca-certificates curl gnupg -y
# DockerのGPGキーを追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# リポジトリを追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# インストール
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
2.2 sudoなしでDockerを使う設定
sudo usermod -aG docker $USER
# ログアウトしてログインし直す
2.3 動作確認
docker run hello-world
「Hello from Docker!」と表示されれば成功です。
3. 基本コマンド
3.1 イメージの操作
docker pull python:3.12 # イメージをダウンロード
docker images # イメージ一覧
docker rmi python:3.12 # イメージを削除
3.2 コンテナの操作
docker run -it python:3.12 bash # コンテナを起動してbashに入る
docker run -d --name myapp nginx # バックグラウンドで起動
docker ps # 起動中のコンテナ一覧
docker ps -a # 全コンテナ一覧
docker stop myapp # コンテナを停止
docker start myapp # コンテナを再開
docker rm myapp # コンテナを削除
docker logs myapp # ログを確認
docker exec -it myapp bash # 起動中のコンテナに入る
3.3 コマンド早見表
| コマンド | 機能 |
|---|---|
docker pull | イメージをダウンロード |
docker run | コンテナを起動 |
docker ps | 起動中のコンテナ一覧 |
docker stop | コンテナを停止 |
docker rm | コンテナを削除 |
docker images | イメージ一覧 |
docker rmi | イメージを削除 |
docker build | Dockerfileからイメージを構築 |
docker exec | 起動中のコンテナでコマンド実行 |
docker logs | コンテナのログを確認 |
docker compose up | 複数コンテナを一括起動 |
4. Dockerfileの書き方
4.1 基本的なDockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]
4.2 主要な命令
| 命令 | 説明 |
|---|---|
FROM | ベースイメージ |
WORKDIR | 作業ディレクトリ |
COPY | ファイルをコンテナにコピー |
RUN | ビルド時にコマンドを実行 |
CMD | コンテナ起動時に実行 |
ENV | 環境変数 |
EXPOSE | ポートの公開 |
4.3 ビルドと実行
docker build -t myapp:1.0 .
docker run -d --name myapp-instance myapp:1.0
5. AI開発での活用例
5.1 Jupyter Notebook環境
FROM python:3.12-slim
RUN pip install jupyter numpy pandas matplotlib
WORKDIR /workspace
EXPOSE 8888
CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--allow-root", "--no-browser"]
docker build -t my-jupyter .
docker run -d -p 8888:8888 -v $(pwd):/workspace my-jupyter
5.2 GPU対応コンテナ
FROM nvidia/cuda:12.1.0-runtime-ubuntu22.04
RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip3 install torch torchvision
WORKDIR /app
COPY . .
CMD ["python3", "train.py"]
docker build -t my-gpu-app .
docker run --gpus all my-gpu-app
6. よくある質問
Q. Docker DesktopとDocker Engineの違いは?
Docker DesktopはGUI付きの統合環境(個人利用は無料、商用は有料)。Docker EngineはCLIのみ(無料)。UbuntuサーバーではDocker Engineを推奨します。
Q. コンテナのデータは永続化されますか?
デフォルトではコンテナ削除時にデータも消えます。永続化するには -v オプションでボリュームをマウントしてください:docker run -v $(pwd)/data:/app/data myapp
Q. ディスク容量が圧迫されています。
docker system prune で不要なイメージ・コンテナ・ボリュームを一括削除できます。
Q. docker: permission denied と出ます。
sudo usermod -aG docker $USER を実行してログインし直してください。
まとめ
Dockerは環境を分離し、再現性を高める強力なツールです。
- インストール — 公式リポジトリから
- 基本コマンド —
run,ps,stop,rm - Dockerfile —
FROM,RUN,CMDで環境を定義 - AI活用 — Jupyter環境やGPU対応コンテナを簡単に構築
この記事を書いた人
しろみそ
Windows環境からUbuntuへ移行した経験をもとに、AIツール(Claude Code等)を日常的な作業に組み込む実践を記録しています。「Ubuntu × AI作業環境」という組み合わせの日本語情報が少なかったことが、このブログを始めたきっかけです。