AlmaLinux 10.x環境でDocker Engineを使うメリット
最新のエンタープライズLinux環境であるAlmaLinux 10.xでのコンテナ開発は、極めて安定した開発基盤を提供します。 特にRHEL系の最新ディストリビューションは、セキュリティ機能(SELinux)とパッケージ管理(dnf)が強化されており、本番環境を見据えた開発に最適です。
本ガイドは、最新のAlmaLinux 10.xにDocker Engineをインストールし、すぐに実用できる状態にするための完全な手順を提供します。 一般的なインストール手順だけでなく、RHEL系特有のセキュリティ設定や、インストール後の必須設定まで網羅しています。
動作環境
この記事ではAlmaLinux 10.1で動作検証しております。 その他、以下のような環境で組みわせの動作検証を行なっております。
- AlmaLinux 10.1
- Kernel 6.12
- Docker 29.1.3
過去のバージョン10.xでの動作確認
同様に過去にAlmaLinux 10.0でも動作確認しております。 この記事はAlmaLinux 10.1にアップデートしております。 Dockerのインストール手順は10.0から10.1へ変わっても基本的に同様の手順でDockerをインストールすることができます。
前提条件:必要な環境と初期設定
本ガイドの手順を実行するにあたり、以下の環境と準備が必要です。 事前にご確認いただくことで、インストール時のエラーを最小限に抑えることができます。
- OS環境:AlmaLinux 10.1がインストール済みであること
- 備考:他のRHEL系ディストリビューション(例: Rocky Linux 10.1)でも基本的に手順は共通ですが、特定のパッケージ名が異なる場合があります。
- 権限:sudo コマンドを実行できる一般ユーザーアカウントが必要です。rootアカウントでの直接操作は推奨されません。
- ネットワーク:インターネットに接続できる環境が必要です。
- パッケージ管理:本手順では、AlmaLinux標準のパッケージマネージャーであるdnfを使用します
インストールをスムーズに進めるために、もしAlmaLinux 10.1の初期セットアップがまだ完了していない場合は、事前にファイアウォール(Firewalld)やSELinuxの基本設定を確認しておくことを推奨します。
Docker Engineのインストール手順
このセクションでは、AlmaLinux 10.1に最新かつ安定版のDocker Engineをインストールするための、Docker公式が推奨するリポジトリ経由の手順を解説します。 この方法により、システムの安定性とセキュリティが保証されます。
古いDockerパッケージの削除
過去にdocker、docker-common、docker-selinuxなどのパッケージをインストールしたことがある場合は、競合や予期せぬエラーを防ぐため、以下のコマンドで完全に削除します。
$ 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公式のリポジトリを設定します。
必要なツールのインストール
$ sudo dnf install -y dnf-utilsDocker公式リポジトリの追加
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoAlmaLinuxは、Red Hat Enterprise Linux (RHEL)とバイナリ互換性を持つため、Dockerの公式リポジトリはCentOS向けのものを使用します。 これは、AlmaLinuxがCentOSの論理的な後継OSであり、パッケージ管理やシステム構成が完全に一致しているためです。
dnfコマンドを使ってDocker Engineのインストール
リポジトリの準備が整いました。 以下のコマンドで、最新のDocker Engine、Docker CLI、およびContainerdをインストールします。
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginAlmaLinuxはRHEL系であるため、CentOS用リポジトリを使用していますが、パッケージ管理はdnfを使用します。
インストールが完了したら、以下のコマンドでDockerのバージョンを確認し、正常にインストールされたことを検証します。
$ docker --versionDocker version 29.1.3, build f52814dDockerサービスの起動と自動化設定
Dockerはサービスとして動作するため、インストール後、明示的に起動する必要があります。
systemctl を使ったサービスの有効化と起動
AlmaLinux 10.1ではDockerのインストール直後は、Dockerサービスは起動していません。

systemctlコマンドを使用して、Dockerサービスを起動し、システム起動時に自動的に立ち上がるように設定します。
$ sudo systemctl enable --now docker状態の確認
以下のコマンドで、Dockerサービスが active (running) になっていることを確認してください。

セキュリティと権限設定(インストール後の必須設定)
Dockerをインストールした直後の状態では、セキュリティ上の理由からrootユーザー(またはsudo)を使わなければDockerコマンドを実行できません。 しかし、これは開発や運用において非常に不便であり、推奨される運用形態ではありません。
このセクションでは、セキュリティを維持しつつ、日常的にDockerを快適に使用するための必須設定を行います。
非rootユーザーでDockerを実行するための設定
非rootユーザーがsudoなしでDockerを実行できるようにするには、該当ユーザーをdockerグループに追加する必要があります。
- STEP
グループの確認ユーザーの追加
Docker Engineがインストールされると、自動的にdockerというグループが作成されます。 以下のコマンドで、現在ログインしているユーザー(例: higma)をこのグループに追加します。
Terminal window $ sudo usermod -aG docker $USER - STEP
グループ設定の反映(セッション再起動)
ユーザーが新しいグループ権限(dockerグループ)を有効にするためには、一度ログアウトして再ログインするか、以下のコマンドを実行してグループ情報を再読み込みする必要があります。
Terminal window # 現在のシェルに新しいグループ設定を適用$ newgrp dockerこのコマンドを実行してもエラーが表示されなければ成功です。
- STEP
動作確認:sudoなしでの実行
sudoを付けずに以下のテストコマンドを実行し、エラーが発生しないことを確認します。
Terminal window $ docker run hello-world
動作確認:Hello Worldコンテナの実行
前項の最後のステップで実行したhello-worldコンテナは、Docker Engineが正しくインストールされ、非rootユーザーからの実行権限が正しく設定されていることを検証する最も簡単な方法です。
Unable to find image 'hello-world:latest' locallylatest: 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 CLI の Plugin として提供されており、既にDocker Engineのインストール時に一緒にインストールされています。
最新のファイル名 :compose.yml
以前はdocker-compose.ymlが標準でしたが、現在はcompose.ymlを使用することが推奨されています。これは、docker composeコマンドを使用する際に、ファイル名を省略できるようにするためです。
# Docker Composeのバージョン確認(Compose Plugin形式)$ docker compose versionCompose 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 |
Compose Specificationに準拠したファイルを作成する場合、ファイルの冒頭で version: を指定する必要はありません。 バージョンを省略することで、使用するDocker Compose CLIが自動的に最新の仕様に則ってファイルを解釈することが保証されます。
したがって、以下のように記述するのが現在の公式な推奨です。
# compose.yml の最新のベストプラクティス# version: の指定は不要です。
services: web: image: nginx:latest ports: - "80:80"# ... (他の設定が続く)