Linux Mint 22 に Docker をインストールする

Linux Mint は中身が Ubuntu なので、「Ubuntu Docker インストール」あたりの検索で上がってくる記事を参考にすると Docker のインストールができなくないんですが、一つだけハマりポイントがあるので備忘録として記事をまとめておきます。

なお、Docker は Linux Mint の本家リポジトリにも含まれてるので、ぶっちゃけ sudo apt install docker.io でインストールできるんですが、最新バージョンが利用できるので、今回は Docker 公式リポジトリからインストールします。

これらの情報が一応、参考になります

Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
【入門】UbuntuにDockerをインストールする - カゴヤのサーバー研究室
Dockerがあれば様々なアプリケーションやサーバーを、仮想環境上で手軽に扱えるようになります。Docker環境はUbuntuをはじめ、Linux系のOSで構築 Dockerがあれば様々なアプリケーションやサーバーを、仮想環境上で手軽に扱えるようになります。Docker環境はUbuntuをはじめ、Linux系のOSで構築が可能です。この記事では、そもそもDockerとは何か簡単に振り返った上で、UbuntuにDockerをインストールする手順を分かりやすく解説しています。DockerをUbuntuへインストールするのに、煩雑で手間のかかる作業は必要ありません。本記事で紹介...

が、このまま手順を進めると Linux Mint では途中でコケますw

参考ページの1つめ、dockerdoc の記事だと ↓ の部分、

# Add the repository to Apt sources:
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" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

同じく2つめのカゴヤのサーバー研究室の記事だと ↓の部分、

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

ダブルクオーテーションで囲まれた内容で /etc/apt/sources.list.d/docker.list ってファイルを作成する箇所なんですが、$(. /etc/os-release && echo "$VERSION_CODENAME") にしても $(lsb_release -cs) にしても、Linux Mint のバージョンコードネームを拾ってきちゃうので、「リポジトリにそんなパスねぇよ」って怒られちゃうんですよね。

なので……、

Linux Mint の /etc/os-release の内容を覗いてみると

NAME="Linux Mint"
VERSION="22 (Wilma)"
ID=linuxmint
ID_LIKE="ubuntu debian"
PRETTY_NAME="Linux Mint 22"
VERSION_ID="22"
HOME_URL="https://www.linuxmint.com/"
SUPPORT_URL="https://forums.linuxmint.com/"
BUG_REPORT_URL="http://linuxmint-troubleshooting-guide.readthedocs.io/en/latest/"
PRIVACY_POLICY_URL="https://www.linuxmint.com/"
VERSION_CODENAME=wilma
UBUNTU_CODENAME=noble

と返ってきまして、特に $(. /etc/os-release && echo "$VERSION_CODENAME") の方だとわかりやすいんだけど、 $VERSION_CODENAME だと Ubuntu じゃなく、Linux Mint のバージョンコードネームが代入されちゃうわけです。なので、$(. /etc/os-release && echo "$VERSION_CODENAME") あるいは $(lsb_release -cs) の部分を $(. /etc/os-release && echo "$UBUNTU_CODENAME") に書き換えて実行しないと、なのです。

参考ページの1つめ、dockerdoc の記事から引用した部分を例にすると、

  # Add the repository to Apt sources:
  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/os-release && echo "$UBUNTU_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

を実行することになります。

ちなみに、前述通りファイルを作成する箇所なので、root 権限で

deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable

って内容で /etc/apt/sources.list.d/docker.list を手動で作っても OK といえば OK です。

Linux Mint 固有のハマりどころはここだけのはずなので、これさえできれば問題なく Docker 公式リポジトリから Docker をインストールできるはずです。