最も早い方法: Docker イメージでサーバーを作成
新しくサーバーを作るなら、イメージ一覧から Docker を選ぶのが最も早い方法です。Ubuntu 24.04 LTS 上に Docker Engine と Docker Compose がインストールされた状態で始まるので、ログインしたらすぐに docker compose up を実行できます。アプリの紹介とおすすめのサイズは Docker VPS のページにあります。
すでに使っているサーバーに Docker を追加したい場合や、Debian、AlmaLinux のように別の OS を使いたい場合は、下の手順で自分でインストールします。すべてのコマンドは、root で接続した状態を前提にしています。一般ユーザーで接続した場合は、コマンドの前に sudo を付けてください。
インストール前に確認すること
Docker は、どのサイズのサーバーでも動きます。コンテナをいくつか動かす個人プロジェクトなら最小の 12GB 一般プランで十分で、データベース、ウェブサーバー、キャッシュを一緒に動かすなら 24GB 以上に余裕があります。イメージのダウンロードやビルドが多いなら、ディスクの速い NVMe VPS で体感速度が上がります。
OS のリポジトリに含まれる古い Docker パッケージがあれば、公式のパッケージと混ざらないように先に削除します。インストールされていないパッケージはスキップされるので、そのまま実行して大丈夫です。
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneUbuntu 24.04 に Docker をインストール
ステップ1. リポジトリのキーとアドレスを追加
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
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" > /etc/apt/sources.list.d/docker.listステップ2. Docker Engine と Compose をインストール
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginインストールが終わると Docker のサービスが自動で起動し、サーバーを再起動しても一緒に起動します。同じコマンドが Ubuntu 22.04 と 26.04 でもそのまま動作します。リポジトリのアドレスに入るバージョン名は、/etc/os-release から自動で読み取ります。
Debian 13 に Docker をインストール
Debian は Ubuntu と手順が同じで、リポジトリのアドレスだけが linux/debian に変わります。Debian 12 でも同じコマンドを使います。
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
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/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginAlmaLinux 10 に Docker をインストール
AlmaLinux と Rocky Linux は、Docker の RHEL 用リポジトリを使います。標準で入っている Podman と重ならないよう、先に整理してからインストールします。AlmaLinux 9 と Rocky Linux 9、10 でも同じコマンドです。
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now dockerはじめてインストールするときにリポジトリの署名キーを受け入れるか尋ねられたら、y を押します。RHEL 系はインストール後にサービスが自動で起動しないので、最後の行の systemctl enable --now docker でいま起動し、起動時にも有効になるようにします。
インストールの確認と最初のコンテナ
下のコマンドで、テスト用のコンテナを一度起動してみます。Hello from Docker で始まる案内が表示されれば、エンジン、イメージのダウンロード、コンテナの実行がすべて正常です。--rm を付けているので、実行が終わるとコンテナはすぐに削除されます。
docker run --rm hello-world
docker compose version一般ユーザーでも Docker を使いたい場合は、そのユーザーを docker グループに追加してログインし直します。docker グループは root と同じ権限を持つので、信頼できるユーザーだけを追加してください。
usermod -aG docker ユーザー名Docker Compose でサービスを起動
Compose は、コンテナの設定を1つの YAML ファイルに書いておき、1行で起動する方法です。サーバーを移したり新しく作ったりしても、同じファイルさえあれば同じ環境を再現できます。たとえば、Nginx ウェブサーバーを1つ起動するファイルは次のようになります。
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
web:
image: nginx:stable
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
EOF
docker compose up -dブラウザで http://YOUR_SERVER_IP を開くと Nginx の画面が表示されます。html フォルダに index.html を入れれば、そのファイルが表示されます。よく使うコマンドは、次の4つで十分です。
docker compose ps: いま動いているコンテナとポートを表示します。docker compose logs -f: リアルタイムでログを追います。Ctrl+C で抜けます。docker compose pull && docker compose up -d: 新しいイメージを取得し、コンテナを新しいバージョンに入れ替えます。docker compose down: コンテナを停止して整理します。ボリュームに入っているデータはそのまま残ります。
restart: unless-stopped を書いておけば、サーバーを再起動したときにコンテナも自動で再び起動します。自分で停止したコンテナだけが停止したままになります。
ファイアウォールとポート公開の設定
Docker は、ports: で公開したポートを直接ファイアウォールのルール(iptables)に追加して開けます。そのため、ufw で許可していないポートでも ports: に書けば外部から接続できます。外部に見せる必要のないデータベースや管理画面は、下のように 127.0.0.1 にだけバインドしておけば、サーバー内からだけ接続できます。
ports:
- "127.0.0.1:5432:5432"ウェブサービスは80番と443番だけを公開し、残りは同じ Compose ネットワーク内でサービス名で互いに呼び出すようにすると、すっきりします。サーバー全体の基本のファイアウォールは、基本のファイアウォールのガイドに沿って SSH、HTTP、HTTPS だけを開けておいてください。
ログとディスクの管理
コンテナのログは、設定しなければ増え続けます。/etc/docker/daemon.json で下のように local ログドライバーを指定すれば、ログが圧縮され、決めたサイズだけ保管されます。保存してから systemctl restart docker を実行すると、新しく作るコンテナから適用されます。
{
"log-driver": "local"
}使っていないイメージや停止したコンテナもディスクを占めます。docker system df で使用量を確認し、docker image prune -a でいま使っていないイメージを整理します。データが増えたら、サーバーに NVMe ブロックディスクを付けて、Docker のデータフォルダとして使う方法もあります。
データを守ることと次のステップ
コンテナはいつでも削除して作り直せますが、ボリュームに入っているデータは作り直せません。データベースは定期的にダンプファイルを残し、サーバー全体は自動バックアップやスナップショットで一緒に守れば安心です。方法はバックアップとスナップショットのガイドにあります。
Docker で WordPress を起動する Compose ファイルは、WordPress のインストールガイドにあります。複数のアプリを画面からデプロイし、HTTPS 証明書まで自動で設定したいなら、Coolify や Dokploy のイメージでサーバーを作成してみてください。コンテナ専用に使いやすいサイズは、コンテナ VPS にまとめています。
