Last updated on

UbuntuでDockerを使い始める基本:AI環境向け

Written by しろみそ Ubuntu、Claude Code、AI作業環境の構築と実践を記録するブログ

この記事の流れ
  1. この記事は誰向けか
  2. この記事でわかること
  3. 1. Dockerとは
  4. 1.1 なぜDockerが便利なのか
  5. 1.2 コンテナと仮想マシンの違い
  6. 1.3 AI開発でDockerが使われる理由
  7. 2. インストール
  8. 2.1 インストール手順
  9. 2.2 sudoなしでDockerを使う設定
  10. 2.3 動作確認
  11. 3. 基本コマンド
  12. 3.1 イメージの操作
  13. 3.2 コンテナの操作
  14. 3.3 コマンド早見表
  15. 4. Dockerfileの書き方
  16. 4.1 基本的なDockerfile
  17. 4.2 主要な命令
  18. 4.3 ビルドと実行
  19. 5. AI開発での活用例
  20. 5.1 Jupyter Notebook環境
  21. 5.2 GPU対応コンテナ
  22. 6. よくある質問
  23. Q. Docker DesktopとDocker Engineの違いは?
  24. Q. コンテナのデータは永続化されますか?
  25. Q. ディスク容量が圧迫されています。
  26. Q. docker: permission denied と出ます。
  27. まとめ
  28. この記事を書いた人
  29. あわせて読みたい

この記事は誰向けか

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 buildDockerfileからイメージを構築
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は環境を分離し、再現性を高める強力なツールです。

  1. インストール — 公式リポジトリから
  2. 基本コマンドrun, ps, stop, rm
  3. DockerfileFROM, RUN, CMD で環境を定義
  4. AI活用 — Jupyter環境やGPU対応コンテナを簡単に構築

この記事を書いた人

しろみそ

Windows環境からUbuntuへ移行した経験をもとに、AIツール(Claude Code等)を日常的な作業に組み込む実践を記録しています。「Ubuntu × AI作業環境」という組み合わせの日本語情報が少なかったことが、このブログを始めたきっかけです。


あわせて読みたい