はじめに
この記事では、Almalinux 9.3にDockerをインストールする方法について説明します。dockerをインストールした後は、一般ユーザでも実行できるようにします。そのあとは、dockerデーモンがシステム起動時に立ち上がるように設定します。
Almalinux
Almalinuxは、CentOSから派生したLinuxディストリビューションです。企業向けに安定性とセキュリティ性に重点を置いて開発されています。Red Hat Enterprise Linux(RHEL)と高い互換性があり、RHELに依存するアプリケーションを実行することができます。一方、Rocky Linuxは、CentOSから派生した別のLinuxディストリビューションであり、RHELとの互換性を維持することを目的としています。現在では、Rocky LinuxとAlmalinuxの両方が、CentOSのサポート終了後の代替OSとして注目されています。
この記事で扱うAlmalinuxのバージョンは9.3です。バージョン9.3は2023年11月23年にリリースされました。
Docker
Dockerは、コンテナ仮想化技術を利用してアプリケーションを簡単かつ効率的にデプロイするためのオープンソースプラットフォームです。
メリットは大きく2つあります。2つメリットとは環境構築の容易さと高い移植性です。このメリットは開発効率の向上、インフラコストの削減、セキュリティの向上など、さまざまな効果をもたらします。
動作環境
- docker 25.0.2
- AlmaLinux 9.3
関連記事
インストール方法
公式サイトによると、次の3つの方法でインストールできます。
- リポジトリを登録してそこからインストールする(推奨される方法)
- RPMパッケージをダウンロードしてきて手動でインストールする(アップグレードを手動で管理しなければならないが、インターネットにアクセスできないようなホストにもインストールできる)
- 自動化されたコンビニエンススクリプトを使用してインストールする(テストや開発環境用)
インストールする
この記事では推奨されるリポジトリを登録してそこからインストールする方法を使います。
リポジトリの登録
- step 1
リポジトリの確認(オプション)
まずは、現在登録されているリポジトリを確認します。2つの方法を紹介しますが、どちらか1つの方法で確認すれば大丈夫です。1つ目の方法はdnfコマンドとyumコマンド両方紹介します。
1つ目はdnf repolistコマンドを使う方法です。今は、実行しても何も表示されていません。今はまだ登録されていないことがわかります。
$ dnf repolist | grep docker
1つ目はyum repolistコマンドを使う方法です。今は、実行しても何も表示されていません。今はまだ登録されていないことがわかります。
$ yum repolist | grep docker
2つ目は、/etc/yum.repos.dディレクトリを確認する方法です。こちらも実行しても何も表示されていません。今はまだ登録されていないことがわかります。
$ ls /etc/yum.repos.d/ | grep docker
- step 2
リポジトリの登録
次に、実際にリポジトリの登録を行います。
dnf config-managerコマンドでリポジトリを登録します。すると、「Adding repo from: ・・・」、とメッセージが表示されます。これでリポジトリの登録は完了です。
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
yum config-managerコマンドでリポジトリを登録します。すると、「Adding repo from: ・・・」、とメッセージが表示されます。これでリポジトリの登録は完了です。
$ sudo yum config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo Adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
- step 3
リポジトリの確認(オプション)
最後に、もう一度リポジトリの確認を行います。2つの方法を紹介します。どちらか1つの方法で確認すれば大丈夫です。
まずは1つ目の方法、dnf repolistコマンドでリポジトリを確認します。docker-ce-stabeという名前のリポジトリが追加されていることがわかります。
$ dnf repolist | grep docker docker-ce-stable Docker CE Stable - x86_64
まずは1つ目の方法、yum repolistコマンドでリポジトリを確認します。docker-ce-stabeという名前のリポジトリが追加されていることがわかります。
$ yum repolist | grep docker docker-ce-stable Docker CE Stable - x86_64
次に2つ目の方法、/etc/yum.repos.dディレクトリを確認します。
$ ls /etc/yum.repos.d/ | grep docker docker-ce.repo
Docker Engineのインストール
- step 1インストール
実際にdockerをインストールします。
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- step 2動作確認
インストールが完了したら、動作確認をしてみます。
$ docker --version Docker version 25.0.2, build 29cf629
dockerバージョン25.0.2がインストールされていることが確認できました。
dockerデーモンの起動
- step 1dockerデーモンの確認(オプション)
ここでは、docker(デーモン)が起動しているか確認してみます。systemctl status dockerを実行します。
$ systemctl status docker
Active項目がinactive (dead)になっているので、起動していないことがわかります。
- step 2dockerデーモンの起動
それでは、docker(デーモン)を起動してみましょう。systemctl start dockerを実行します。
$ sudo systemctl start docker
- step 3dockerデーモンの確認(オプション)
最後に、もう一度、docker(デーモン)が起動しているか確認してみましょう。systemctl status dockerを実行します。
$ systemctl status docker
Active項目がactive (running)になっているので、起動していることがわかります。
動作確認
それでは、実行してみましょう。sudo docker run hello-worldとコマンドを入力します。デフォルトでは管理者権限が必要になります。
$ sudo docker run hello-world
以下のようにHello from Docker!と表示されていればOKです。
docker runコマンドを実行すると、イメージのダウンロード、コンテナの作成、コンテナの実行が行われます。もし、イメージがローカルに存在すればそれを使います。
上の例では初回実行のため、hello-worldという名前のイメージをダウンロードしてきます。そのため、最初の5行が表示されます。2回目以降はローカルに保存されたものを使うため、最初の5行は表示されなくなります。
docker compose
次はdocker composeを使えるようにします。使えるようにしますといっても実はもうできるようになっています。
$ docker compose version
Docker Compose version v2.24.5]
$ docker compose --help
Usage: docker compose [OPTIONS] COMMAND
Define and run multi-container applications with Docker.
・
・
・
上の方でdockerをインストールした時にdocker-compose-pluginパッケージもインストールしています。そのためdocker composeが使えるようになっています。
dockerのバージョン20の頃からcomposeはdockerのサブコマンドとして使えるようになっています。
昔からの方法で、curlでcomposeを手動でダウンロードしてくる方法でも可能ですが、自動アップデートが不可能になってしまいます。そのため、docker-compose-pluginをインストールする方法を公式サイトでも推奨しています。
# 昔からの方法
$ curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
インストール後の設定
一般ユーザでdockerを実行する
Dockerデーモンは常にrootユーザーとして実行されます。そのため、他の一般ユーザはsudoを使用してのみアクセスできます。さきほどの動作確認でもsudoをつけたのはこのためです。
毎回sudoをつけるのは面倒なので、sudo無しで実行できるように設定します。dockerグループにユーザを追加します。
- step 1所属グループの確認(オプション)
まず、ユーザが現在所属しているグループを調べます。
$ groups higmasan wheel
まだdockerグループには所属していません。
- step 2dockerグループに追加する
次に、ユーザをdockerグループに追加します。これは管理者権限が必要です。
$ sudo usermod -aG docker $USER
現在のシェルセッションにはグループの変更が反映されていません。反映するために、su – $USERコマンドで新しくシェルセッションを立ち上げましょう。マシンの再起動でも良いです。
$ su - $USER
- step 3所属グループの確認(オプション)
それでは、所属グループを確認してみましょう。
$ groups higmasan wheel docker
dockerグループに追加されているのが確認できました。
- STEP 4動作確認
最後に、sudo無しで実行してみましょう。
$ docker run hello-world
以下のようにHello from Docker!と表示されていればOKです。
Dockerデーモンを自動起動させる
次は、システムの起動時にdockerデーモンが自動で起動するように設定しましょう。
- STEP 1自動起動の設定
systemctl enable <デーモン名>を実行します。
$ sudo systemctl enable docker Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /usr/lib/systemd/system/docker.service.
- STEP 2確認
systemctl status <デーモン名>で確認してみましょう。
$ systemctl status docker
赤枠のところがenabledになっていば大丈夫です。システムの起動時にdockerも起動するようになっています。
アンインストール
もし、アンインストールしたい場合があれば、次のようにします。dnf remove <パッケージ>でパッケージを削除します。
$ sudo dnf remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd
まとめ
この記事では、Almalinux 9.3にDockerをインストールする方法について説明しました。dockerをインストールした後は、一般ユーザでも実行できるようにしました。そのあとは、dockerデーモンがシステム起動時に立ち上がるように設定しました。
コメント