JetsonにおけるDocker

モジュール3に戻る | 目次に戻る

13. Dockerのインストールと基本的な使用方法

はじめに

Dockerは、アプリケーションとそのすべての依存関係をポータブルなコンテナにパッケージ化する軽量コンテナプラットフォームです。開発、テスト、本番環境での設定のずれを最小限に抑えて、同じ環境を実行するのに役立ちます。

Dockerはプロセスの分離、高速起動、効率的なリソース使用により一貫性を向上させます。ローカル開発、サーバー展開、マルチサービスAIパイプラインに最適です。

JetsonへのDockerのインストール

1. Docker CEのインストール

bash
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

Docker GPG鍵とリポジトリを追加します(以下の例ではAliyunミラーを使用):

bash
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
  | sudo gpg --dearmor -o /usr/share/keyrings/docker-ce.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

Dockerのインストールを確認:

bash
docker --version

Dockerインストール済み

ユーザーをdockerグループに追加(シェルを再起動するかnewgrpを実行):

bash
sudo usermod -aG docker "$USER"
newgrp docker

これ以降、sudoなしでDockerコマンドを実行できます。

2. NVIDIA Container Toolkitのインストール

bash
distribution=$(. /etc/os-release; echo "$ID$VERSION_ID")

curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey \
  | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
  | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

NVIDIA Container Toolkit

ツールキットのインストール:

bash
sudo apt update
sudo apt install -y nvidia-container-toolkit

DockerのGPUランタイムを有効化:

bash
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

コンテナ内のGPUアクセスを確認:

bash
sudo docker run --rm --runtime=nvidia --gpus all --network host ubuntu nvidia-smi

環境にネットワーク制限がある場合は、イメージやパッケージをプルるときにミラー/プロキシを使用してください。

3. 手動インストール(APTが利用できない場合)

Docker CEがUbuntuリポジトリからインストールできない場合は、.debパッケージを手動でダウンロードしてください:

https://download.docker.com/linux/ubuntu/dists/

Ubuntuバージョンを選択:

Ubuntuバージョンコードフォルダの例
Ubuntu 20.04 LTSfocaldists/focal/pool/stable/
Ubuntu 22.04 LTSjammydists/jammy/pool/stable/
Ubuntu 24.04 LTSnobledists/noble/pool/stable/

次にアーキテクチャフォルダを選択:

  • amd64: x86_64(サーバー / PC)
  • arm64: ARM 64ビット(Jetsonを含む)
  • armhf: ARM 32ビット
  • s390x: IBM zシステム

対応する5つのパッケージをダウンロード:

  • containerd.io_<バージョン>_<アーキテクチャ>.deb
  • docker-ce_<バージョン>_<アーキテクチャ>.deb
  • docker-ce-cli_<バージョン>_<アーキテクチャ>.deb
  • docker-buildx-plugin_<バージョン>_<アーキテクチャ>.deb
  • docker-compose-plugin_<バージョン>_<アーキテクチャ>.deb

ファイルをダウンロードしたフォルダからインストール:

bash
sudo dpkg -i ./containerd.io_<バージョン>_<アーキテクチャ>.deb \
  ./docker-ce_<バージョン>_<アーキテクチャ>.deb \
  ./docker-ce-cli_<バージョン>_<アーキテクチャ>.deb \
  ./docker-buildx-plugin_<バージョン>_<アーキテクチャ>.deb \
  ./docker-compose-plugin_<バージョン>_<アーキテクチャ>.deb

依存関係が欠落している場合は、次を実行:

bash
sudo apt -f install

Dockerサービスの状態を確認:

bash
sudo systemctl status docker

Dockerが実行されていない場合:

bash
sudo systemctl start docker

Dockerの基礎

Docker EngineはDocker CLI(docker)を提供し、コマンドラインからイメージ、コンテナ、ネットワーク、ストレージを管理できます。

一般的なコマンドを学ぶ前に、次の2つのコア概念を確認してください:

  • イメージ: コンテナを実行するために必要なベースOS、ランタイム、ライブラリ、アプリコードを含む読み取り専用テンプレート。
  • コンテナ: イメージから作成された実行中のインスタンス。独自のプロセスと環境を持ち、独立して開始/停止できます。

要約:

Dockerイメージはインストールパッケージのようなものであり、コンテナは実行中のプログラムインスタンスです。

一般的なコマンド

1) Docker情報を表示

bash
docker info

2) Dockerバージョンを表示

bash
docker --version

3) イメージをプル

bash
docker pull <イメージ名>

タグが指定されていない場合、Dockerはデフォルトでlatestをプルします。

bash
docker pull <イメージ名>:<タグ>

4) イメージを実行

bash
docker run <イメージ名>

特定のイメージをインタラクティブに実行:

bash
docker run -it ubuntu:18.04 /bin/bash

実行中のコンテナをexitと入力して終了。

4.1) 実行中のコンテナを一覧表示

bash
docker ps

4.2) すべてのコンテナを一覧表示

bash
docker ps -a

5) 停止したコンテナを削除

bash
docker container prune

6) ローカルイメージを一覧表示

bash
docker images

7) イメージを削除

関連するコンテナを停止して削除した後にのみ削除してください。

bash
docker rmi <イメージ名>

8) コンテナを新しいイメージとして保存

bash
docker commit <コンテナID> <新しいイメージ名>:<タグ>

実際のコンテナIDに基づいて名前とタグを選択してください。

9) コンテナを停止

bash
docker stop <コンテナIDまたは名前>

モジュール3に戻る