date-icon

AlmaLinux 10.x(RHEL系)にdockerをインストール・初期設定の完全ガイド

AlmaLinux 10.x環境でDocker Engineを使うメリット

最新のエンタープライズLinux環境であるAlmaLinux 10.xでのコンテナ開発は、極めて安定した開発基盤を提供します。 特にRHEL系の最新ディストリビューションは、セキュリティ機能(SELinux)とパッケージ管理(dnf)が強化されており、本番環境を見据えた開発に最適です。

本ガイドは、最新のAlmaLinux 10.xにDocker Engineをインストールし、すぐに実用できる状態にするための完全な手順を提供します。 一般的なインストール手順だけでなく、RHEL系特有のセキュリティ設定や、インストール後の必須設定まで網羅しています。

動作環境

この記事ではAlmaLinux 10.1で動作検証しております。 その他、以下のような環境で組みわせの動作検証を行なっております。

過去のバージョン10.xでの動作確認

同様に過去にAlmaLinux 10.0でも動作確認しております。 この記事はAlmaLinux 10.1にアップデートしております。 Dockerのインストール手順は10.0から10.1へ変わっても基本的に同様の手順でDockerをインストールすることができます。

前提条件:必要な環境と初期設定

本ガイドの手順を実行するにあたり、以下の環境と準備が必要です。 事前にご確認いただくことで、インストール時のエラーを最小限に抑えることができます。

info-icon info

インストールをスムーズに進めるために、もしAlmaLinux 10.1の初期セットアップがまだ完了していない場合は、事前にファイアウォール(Firewalld)やSELinuxの基本設定を確認しておくことを推奨します。

Docker Engineのインストール手順

このセクションでは、AlmaLinux 10.1に最新かつ安定版のDocker Engineをインストールするための、Docker公式が推奨するリポジトリ経由の手順を解説します。 この方法により、システムの安定性とセキュリティが保証されます。

古いDockerパッケージの削除

過去にdocker、docker-common、docker-selinuxなどのパッケージをインストールしたことがある場合は、競合や予期せぬエラーを防ぐため、以下のコマンドで完全に削除します。

Terminal window
$ sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc

これらのパッケージがインストールされていない場合は、このコマンドを実行してもエラーは発生しませんのでご安心ください。

公式リポジトリの追加とGPG鍵のインポート

Docker Engineの最新版を安定して取得するため、Docker公式のリポジトリを設定します。

必要なツールのインストール

Terminal window
$ sudo dnf install -y dnf-utils

Docker公式リポジトリの追加

Terminal window
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
info-icon RHEL互換性に関する注記

AlmaLinuxは、Red Hat Enterprise Linux (RHEL)とバイナリ互換性を持つため、Dockerの公式リポジトリはCentOS向けのものを使用します。 これは、AlmaLinuxがCentOSの論理的な後継OSであり、パッケージ管理やシステム構成が完全に一致しているためです。

dnfコマンドを使ってDocker Engineのインストール

リポジトリの準備が整いました。 以下のコマンドで、最新のDocker Engine、Docker CLI、およびContainerdをインストールします。

Terminal window
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
info-icon 注意点

AlmaLinuxはRHEL系であるため、CentOS用リポジトリを使用していますが、パッケージ管理はdnfを使用します。

インストールが完了したら、以下のコマンドでDockerのバージョンを確認し、正常にインストールされたことを検証します。

Terminal window
$ docker --version
Docker version 29.1.3, build f52814d

Dockerサービスの起動と自動化設定

Dockerはサービスとして動作するため、インストール後、明示的に起動する必要があります。

systemctl を使ったサービスの有効化と起動

AlmaLinux 10.1ではDockerのインストール直後は、Dockerサービスは起動していません。

dockerは停止中

systemctlコマンドを使用して、Dockerサービスを起動し、システム起動時に自動的に立ち上がるように設定します。

Terminal window
$ sudo systemctl enable --now docker

状態の確認

以下のコマンドで、Dockerサービスが active (running) になっていることを確認してください。

dockerは起動中

セキュリティと権限設定(インストール後の必須設定)

Dockerをインストールした直後の状態では、セキュリティ上の理由からrootユーザー(またはsudo)を使わなければDockerコマンドを実行できません。 しかし、これは開発や運用において非常に不便であり、推奨される運用形態ではありません。

このセクションでは、セキュリティを維持しつつ、日常的にDockerを快適に使用するための必須設定を行います。

非rootユーザーでDockerを実行するための設定

非rootユーザーがsudoなしでDockerを実行できるようにするには、該当ユーザーをdockerグループに追加する必要があります。

  1. STEP

    グループの確認ユーザーの追加

    Docker Engineがインストールされると、自動的にdockerというグループが作成されます。 以下のコマンドで、現在ログインしているユーザー(例: higma)をこのグループに追加します。

    Terminal window
    $ sudo usermod -aG docker $USER
  2. STEP

    グループ設定の反映(セッション再起動)

    ユーザーが新しいグループ権限(dockerグループ)を有効にするためには、一度ログアウトして再ログインするか、以下のコマンドを実行してグループ情報を再読み込みする必要があります。

    Terminal window
    # 現在のシェルに新しいグループ設定を適用
    $ newgrp docker

    このコマンドを実行してもエラーが表示されなければ成功です。

  3. STEP

    動作確認:sudoなしでの実行

    sudoを付けずに以下のテストコマンドを実行し、エラーが発生しないことを確認します。

    Terminal window
    $ docker run hello-world

動作確認:Hello Worldコンテナの実行

前項の最後のステップで実行したhello-worldコンテナは、Docker Engineが正しくインストールされ、非rootユーザーからの実行権限が正しく設定されていることを検証する最も簡単な方法です。

Terminal window
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
・・・
Hello from Docker!
This message shows that your installation appears to be working correctly.

このメッセージが表示されたら、AlmaLinux 10.1上でのDocker Engineのインストールと基本設定は成功です。

Docker Composeのインストールと応用

Docker Composeは、複数のコンテナで構成されるアプリケーションを定義し、一括で管理するためのツールです。 最新の Compose Specification に準拠することで、将来にわたって互換性の高い設定ファイルを作成できます。

Docker Compose Plugin のインストールとファイル名の最新推奨

最新のDockerでは、Docker Composeが Docker CLIPlugin として提供されており、既にDocker Engineのインストール時に一緒にインストールされています。

最新のファイル名 :compose.yml

以前はdocker-compose.ymlが標準でしたが、現在はcompose.ymlを使用することが推奨されています。これは、docker composeコマンドを使用する際に、ファイル名を省略できるようにするためです。

Terminal window
# Docker Composeのバージョン確認(Compose Plugin形式)
$ docker compose version

Compose Specificationとバージョン指定の変遷

Docker Composeの設定ファイルの仕様は、ツールの進化と共に変化してきました。最新の Compose Specification を加えることで、歴史的経緯と現在のベストプラクティスを明確に示します。

仕様バージョン特徴と利用シーンバージョン指定推奨ファイル名
V2 (旧)初期仕様。主にローカル開発環境に特化。Docker Engineへの依存度が高い。必須 (version: ‘2.x’)docker-compose.yml
V3 (旧)Docker Swarm との互換性を重視。V2から一部記法が変更され、Swarm連携が可能に。必須 (version: ‘3.x’)docker-compose.yml
Compose Specification (最新)Dockerから独立したオープンな仕様。クラウド環境や各種オーケストレーターでの利用を見据えた設計。不要 (省略推奨)compose.yml
info-icon 現在のベストプラクティス

Compose Specificationに準拠したファイルを作成する場合、ファイルの冒頭で version: を指定する必要はありません。 バージョンを省略することで、使用するDocker Compose CLIが自動的に最新の仕様に則ってファイルを解釈することが保証されます。

したがって、以下のように記述するのが現在の公式な推奨です。

compose.yml
# compose.yml の最新のベストプラクティス
# version: の指定は不要です。
services:
web:
image: nginx:latest
ports:
- "80:80"
# ... (他の設定が続く)