地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

Ubuntu 26.04でSSHからDockerといった最初の一歩を設定してみた。

計算に使っていた古いPCのSSDが「Offline_Uncorrectable」を表示されるようになり、SSDの寿命かも・・・という状況に陥った。色々と値段が高騰している時期にとボヤキながら、出来る限り安いSSDを買ってきてOSからセットアップしたのでメモ。他にもファイヤーウォール設定あたりもありますが、まずは最低限の開発環境を構築しました。

 

対象OS

Ubuntu 26.04 LTS

 

SSHをインストール

sudo apt update
sudo apt -y install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh
sudo systemctl sutatus ssh

 

Windows側(クライアント側)

ssh-keygen -t ed25519 -C "your_email@example.com"

pubキーを作ります。秘密キーは所定の場所に保存します。

 

Ubuntu側(サーバー)

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

pubキーを追記します。

 

パスワード無効化も必要ならば。

 

Docker & Docker Compose のインストール

公式リポジトリから入れます。

# 古いバージョンを削除(念のため)
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

# セットアップ
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# リポジトリ追加
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# sudoなしで実行できるように設定(要再ログイン)
sudo usermod -aG docker $USER

uv (Python Package Manager) のインストール

# uvのインストール

curl -LsSf https://astral.sh/uv/install.sh | sh

特定のバージョン(例: 3.12)をインストールしテスト

# テスト用の適当なディレクトリで
uv python install 3.12
uv venv # 仮想環境の作成

自動化ワンライナー(まとめ)

例えば、一気に実行したい場合は、以下の内容を setup.sh として保存して実行。

#!/bin/bash
set -e

echo "Updating system..."
sudo apt update && sudo apt upgrade -y

echo "Installing Docker..."
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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 -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER

echo "Installing uv..."
curl -LsSf https://astral.sh/uv/install.sh | sh

echo "Setup complete. Please logout and login again to reflect Docker group changes."

 

NVIDIA Container Toolkit のインストール

NVIDIAドライバの確認

ツールキットを入れる前に、ホスト側にドライバが入っている必要があります。

nvidia-smi
このコマンドでGPUの情報が表示されない場合は、先にドライバをインストールしてください。
sudo ubuntu-drivers install
インストール後は再起動してください
sudo reboot

NVIDIA Container Toolkit のインストール

公式のリポジトリを追加してインストールします。

# リポジトリのGPGキーとリストを追加
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /etc/apt/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=/etc/apt/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# インストール
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Dockerのランタイム設定

DockerがNVIDIA GPUを認識できるように設定を書き換えます。
# Dockerのランタイムとしてnvidiaを構成
sudo nvidia-ctk runtime configure --runtime=docker
# 設定を反映させるためにDockerを再起動
sudo systemctl restart docker

Dockerの動作確認

最後に、コンテナ内からGPUが見えるかテストします。
docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
これでホスト側と同じ nvidia-smi の結果を確認して終了。

NVIDIA Dockerの「デフォルト化」

毎回 --runtime=nvidia を打つのは手間なので、daemon.json を書き換えて、常にNVIDIAを使うようにしてみる。

sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
sudo systemctl restart docker
 

SSHのパスフレーズを一度だけ入力するようにする。

Windows側ssh-addで

ssh-add C:\{Users\myusername}\.ssh\id_ed25519"
Windowsで自動化
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
 
Ubuntu
sudo apt install keychain -y
起動時に読み込む
if command -v keychain >/dev/null 2>&1; then
  eval $(keychain --eval --quiet ~/.ssh/id_ed25519)
fi
 

Node.jsをnvmで

 
 
 
参考サイト:

 

www.linuxmaster.jp

 

docs.docker.com

github.com

 

blog.lycolia.info

zenn.dev

qiita.com

github.com