ubuntu24.04LTS に Docker Engine をインストールしてみた。

ubuntu24.04LTS に Docker Engine をインストールしてみました。作業はrootユーザーで行っています。

まずは Docker Engine のインストールに必要なパッケージを取り込みます。すでに ca-certificates や curl がubuntuにインストールされていればこの作業は不要です。


# apt install ca-certificates curl

次に、GPGキーの追加をします。GPGキーの追加には apt-key コマンドがありますが、このコマンドは非推奨になっているとのことで以下のようにします。docker.asc がGPGの公開鍵です。


# 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

Docker公式リポジトリの追加を行います。

リポジトリの追加を行うには add-apt-repository コマンドがありますが、このコマンドは Launchpad(ubuntuのPPA)用に設計されたものです。Dockerは独自のリポジトリ(PPAではない)を使っており、公開鍵の扱いや署名方式もやや異なるため add-apt-repository は使わないほうが良いとのことです。そのため /etc/apt/sources.list.d 配下に手動で docker.list ファイルを作成します。


# echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

なお太字の部分ですが環境によって異なります。前半のアーキテクチャは dpkg コマンドで確認できます。


# dpkg --print-architecture

後半の太字はubuntuのバージョンです。24.04LTSの場合は noble になります。22.04LTSであれば jammy です。

ここまでの作業が終わったらパッケージリストの更新を行います。


# apt update

Docker Engine のインストールをします。


# apt install docker-ce docker-ce-cli containerd.io

バージョンの確認をしてみます。


# docker --version

2025年4月の時点でDockerのバージョンは version 28.1.1, build 4eba377 でした。

Dockerをインストールした初期状態ではroot権限がないと作業ができません(rootでないとdockerコマンドを使えません)。ですので通常ユーザーでも作業ができるようにしておきます。


# usermod -aG docker user

太字の user は普段使っているユーザー名になおしてください。一度ログアウトして再ログインをすると通常ユーザーでも docker コマンドが使えるようになります。

ubuntu22.04LTS に PHP7.4 をインストールする(PHPをダウングレードする)。

ubuntuを 20.04LTS から 22.04LTS にOSをアップグレードしたら PHP7.4 が削除されて PHP8.1 がインストールされました。22.04LTS ではデフォルトでサポートされているPHPのバージョンは8.1とのことです。 PHPのバージョンを上げるつもりはなかったので元に戻します。作業はrootユーザーで行いました。

まず、PHP7.4で必要なパッケージのインストールを行います。

# apt install software-properties-common

次に、リポジトリの追加を行います。ppa:ondrej/php リポジトリには過去バージョンのPHPが揃っています。

# add-apt-repository ppa:ondrej/php

いったんここでパッケージリストを更新します。

# apt update

準備ができたので、PHPのインストールを行います。必要そうなパッケージをまとめてインストールします。


# apt install php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-xml php7.4-mbstring php7.4-curl php7.4-zip

これでPHP7.4のインストールができました。ただこのままだとシステムが認識するPHPは8.1のままなので、update-alternatives コマンドで7.4を有効にする設定をします。

# update-alternatives --config php

選択を促すプロンプトが表示されるので、7.4の番号を選んでリターンキーを押下します。


# update-alternatives --config php
alternative php (/usr/bin/php を提供) には 2 個の選択肢があります。

  選択肢    パス           優先度  状態
------------------------------------------------------------
* 0            /usr/bin/php8.1   81        自動モード
  1            /usr/bin/php7.4   74        手動モード
  2            /usr/bin/php8.1   81        手動モード

現在の選択 [*] を保持するには 、さもなければ選択肢の番号のキーを押してください: 1 ←ここを入力
update-alternatives: /usr/bin/php (php) を提供するためにマニュアルモードで /usr/bin/php7.4 を使います

PHPのバージョンを確認して7.4になっていれば完了です。

# php -v

なお nginxでPHPを動かす場合ですが php7.4-fpm をインストールすると /var/run/php 配下に php7.4-fpm.sock というソケットファイルができます。このソケットファイルを nginx.conf の fastcgi_pass ディレクティブに指定すればよいのですが、同ディレクトリには php-fpm.sock というシンボリックリンクがあり、こちらのリンク先は php7.4-fpm.sock になっているようです。

# update-alternatives --display php-fpm.sock


# update-alternatives --display php-fpm.sock
php-fpm.sock - 自動モード
  最適なリンクのバージョンは '/run/php/php7.4-fpm.sock' です
  リンクは現在 /run/php/php7.4-fpm.sock を指しています
  リンク php-fpm.sock は /run/php/php-fpm.sock です
/run/php/php7.4-fpm.sock - 優先度 74

ですので、php-fpm.sock でも良いと思います。