Linux Mint に Docker をインストール

2024年10月14日
6 分

Docker 公式のおすすめに従って、Docker Desktop for Linux をインストールすることにした。

Linux Mint は Ubuntu がベースなので、Ubuntu のページを参考にする。

Docker は KVM を使うので、さきに KVM を有効にする。プロセッサは Intel だから、kvm_intelも有効にする。

takatoh@apostrophe:~$ modprobe kvm  
takatoh@apostrophe:~$ modprobe kvm_intel

何も出力がないのはうまく行ったってことか。もし失敗したら kvm-ok コマンドで確認しろと書いてあるのでやってみる。

akatoh@apostrophe:~$ kvm-ok  
INFO: /dev/kvm exists  
KVM acceleration can be used

大丈夫らしい。kvm モジュールが有効になってるかどうかは、つぎのようにしてチェックできる。

takatoh@apostrophe:~$ lsmod | grep kvm  
kvm_intel             487424  0  
kvm                  1404928  1 kvm_intel  
irqbypass              12288  1 kvm

これも大丈夫そうだ。

KVM デバイス(/dev/kvm)に対するアクセス権をつける。

takatoh@apostrophe:~$ sudo usermod -aG kvm $USER

さて、ここまではどのディストリビューションでも同様だけど、ここからは Ubuntu 特有の部分。

Docker の apt リポジトリを登録するが、その前に下準備。

takatoh@apostrophe:~$ sudo apt-get update  
takatoh@apostrophe:~$ sudo apt-get install ca-certificates curl  
takatoh@apostrophe:~$ sudo install -m 0755 -d /etc/apt/keyrings  
takatoh@apostrophe:~$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc  
takatoh@apostrophe:~$ sudo chmod a+r /etc/apt/keyrings/docker.asc

で、リポジトリを登録。

takatoh@apostrophe:~$ 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

登録したら、apt-get update

takatoh@apostrophe:~$ sudo apt-get update  
ヒット:1 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble InRelease  
無視:2 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages wilma InRelease       
ヒット:3 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble-updates InRelease      
ヒット:4 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble-backports InRelease    
ヒット:5 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages wilma Release       
ヒット:6 https://packages.microsoft.com/repos/code stable InRelease              
無視:8 https://download.docker.com/linux/ubuntu wilma InRelease                  
ヒット:9 http://security.ubuntu.com/ubuntu noble-security InRelease  
エラー:10 https://download.docker.com/linux/ubuntu wilma Release  
  404  Not Found [IP: 2600:9000:26a6:a600:3:db06:4200:93a1 443]  
パッケージリストを読み込んでいます... 完了  
E: リポジトリ https://download.docker.com/linux/ubuntu wilma Release には Release ファイルがありません。  
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。  
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。

何やらエラーになった。リポジトリがおかしいようだけど……よく見ると、wilma とある。wilma は Linux Mint 22 のコードネームで、Ubuntu 24.04 は noble のはずだ。/etc/os-release ファイルがつぎのようになっている。

takatoh@apostrophe:~$ cat /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

つまり、リポジトリを登録するときに、$VERSION_CODENAME じゃなくて $UBUNTU_CODENAME を参照する必要があったってこと。今回はやり直す代わりに、直接ファイルを編集した。

takatoh@apostrophe:~$ sudo vim /etc/apt/sources.list.d/docker.list

今度は大丈夫のはず。

takatoh@apostrophe:~$ sudo apt-get update  
ヒット:1 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble InRelease  
ヒット:2 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble-updates InRelease      
無視:3 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages wilma InRelease       
ヒット:4 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble-backports InRelease    
ヒット:5 http://ftp.jaist.ac.jp/pub/Linux/linuxmint/packages wilma Release       
取得:6 https://download.docker.com/linux/ubuntu noble InRelease [48.8 kB]        
ヒット:7 https://packages.microsoft.com/repos/code stable InRelease              
ヒット:8 http://security.ubuntu.com/ubuntu noble-security InRelease              
取得:10 https://download.docker.com/linux/ubuntu noble/stable amd64 Packages [15.3 kB]  
64.2 kB を 2秒 で取得しました (39.8 kB/s)  
パッケージリストを読み込んでいます... 完了

あとは Docker (とその関連パッケージ)を apt-get install でインストール。

takatoh@apostrophe:~$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin  
パッケージリストを読み込んでいます... 完了  
依存関係ツリーを作成しています... 完了          
状態情報を読み取っています... 完了          
以下の追加パッケージがインストールされます:  
  docker-ce-rootless-extras libslirp0 pigz slirp4netns  
提案パッケージ:  
  aufs-tools cgroupfs-mount | cgroup-lite  
以下のパッケージが新たにインストールされます:  
  containerd.io docker-buildx-plugin docker-ce docker-ce-cli  
  docker-ce-rootless-extras docker-compose-plugin libslirp0 pigz slirp4netns  
アップグレード: 0 個、新規インストール: 9 個、削除: 0 個、保留: 55 個。  
123 MB のアーカイブを取得する必要があります。  
この操作後に追加で 441 MB のディスク容量が消費されます。  
続行しますか? [Y/n] y  
取得:1 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble/universe amd64 pigz amd64 2.8-1 [65.6 kB]  
取得:2 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble/main amd64 libslirp0 amd64 4.7.0-1ubuntu3 [63.8 kB]  
取得:3 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu noble/universe amd64 slirp4netns amd64 1.2.1-1build2 [34.9 kB]  
取得:4 https://download.docker.com/linux/ubuntu noble/stable amd64 containerd.io amd64 1.7.22-1 [29.5 MB]  
取得:5 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-buildx-plugin amd64 0.17.1-1~ubuntu.24.04~noble [30.3 MB]  
取得:6 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-ce-cli amd64 5:27.3.1-1~ubuntu.24.04~noble [15.0 MB]  
取得:7 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-ce amd64 5:27.3.1-1~ubuntu.24.04~noble [25.6 MB]  
取得:8 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-ce-rootless-extras amd64 5:27.3.1-1~ubuntu.24.04~noble [9,588 kB]  
取得:9 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-compose-plugin amd64 2.29.7-1~ubuntu.24.04~noble [12.7 MB]  
123 MB を 2秒 で取得しました (70.1 MB/s)          
以前に未選択のパッケージ pigz を選択しています。  
(データベースを読み込んでいます ... 現在 545486 個のファイルとディレクトリがインストールされています。)  
.../0-pigz_2.8-1_amd64.deb を展開する準備をしています ...  
pigz (2.8-1) を展開しています...  
以前に未選択のパッケージ containerd.io を選択しています。  
.../1-containerd.io_1.7.22-1_amd64.deb を展開する準備をしています ...  
containerd.io (1.7.22-1) を展開しています...  
以前に未選択のパッケージ docker-buildx-plugin を選択しています。  
.../2-docker-buildx-plugin_0.17.1-1~ubuntu.24.04~noble_amd64.deb を展開する準備をしています ...  
docker-buildx-plugin (0.17.1-1~ubuntu.24.04~noble) を展開しています...  
以前に未選択のパッケージ docker-ce-cli を選択しています。  
.../3-docker-ce-cli_5%3a27.3.1-1~ubuntu.24.04~noble_amd64.deb を展開する準備をしています ...  
docker-ce-cli (5:27.3.1-1~ubuntu.24.04~noble) を展開しています...  
以前に未選択のパッケージ docker-ce を選択しています。  
.../4-docker-ce_5%3a27.3.1-1~ubuntu.24.04~noble_amd64.deb を展開する準備をしています ...  
docker-ce (5:27.3.1-1~ubuntu.24.04~noble) を展開しています...  
以前に未選択のパッケージ docker-ce-rootless-extras を選択しています。  
.../5-docker-ce-rootless-extras_5%3a27.3.1-1~ubuntu.24.04~noble_amd64.deb を展開する準備をしています ...  
docker-ce-rootless-extras (5:27.3.1-1~ubuntu.24.04~noble) を展開しています...  
以前に未選択のパッケージ docker-compose-plugin を選択しています。  
.../6-docker-compose-plugin_2.29.7-1~ubuntu.24.04~noble_amd64.deb を展開する準備をしています ...  
docker-compose-plugin (2.29.7-1~ubuntu.24.04~noble) を展開しています...  
以前に未選択のパッケージ libslirp0:amd64 を選択しています。  
.../7-libslirp0_4.7.0-1ubuntu3_amd64.deb を展開する準備をしています ...  
libslirp0:amd64 (4.7.0-1ubuntu3) を展開しています...  
以前に未選択のパッケージ slirp4netns を選択しています。  
.../8-slirp4netns_1.2.1-1build2_amd64.deb を展開する準備をしています ...  
slirp4netns (1.2.1-1build2) を展開しています...  
docker-buildx-plugin (0.17.1-1~ubuntu.24.04~noble) を設定しています ...  
containerd.io (1.7.22-1) を設定しています ...  
docker-compose-plugin (2.29.7-1~ubuntu.24.04~noble) を設定しています ...  
docker-ce-cli (5:27.3.1-1~ubuntu.24.04~noble) を設定しています ...  
libslirp0:amd64 (4.7.0-1ubuntu3) を設定しています ...  
pigz (2.8-1) を設定しています ...  
docker-ce-rootless-extras (5:27.3.1-1~ubuntu.24.04~noble) を設定しています ...  
slirp4netns (1.2.1-1build2) を設定しています ...  
docker-ce (5:27.3.1-1~ubuntu.24.04~noble) を設定しています ...  
man-db (2.12.0-4build2) のトリガを処理しています ...  
libc-bin (2.39-0ubuntu8.3) のトリガを処理しています ...

これで完了。hello-world イメージを実行してみる。

takatoh@apostrophe:~$ sudo docker run hello-world  
  
Hello from Docker!  
This message shows that your installation appears to be working correctly.  
  
To generate this message, Docker took the following steps:  
 1. The Docker client contacted the Docker daemon.  
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.  
    (amd64)  
 3. The Docker daemon created a new container from that image which runs the  
    executable that produces the output you are currently reading.  
 4. The Docker daemon streamed that output to the Docker client, which sent it  
    to your terminal.  
  
To try something more ambitious, you can run an Ubuntu container with:  
 $ docker run -it ubuntu bash  
  
Share images, automate workflows, and more with a free Docker ID:  
 https://hub.docker.com/  
  
For more examples and ideas, visit:  
 https://docs.docker.com/get-started/

問題なさそうだ。

バージョンの確認をしておく。つぎの通り。

takatoh@apostrophe:~$ docker --version  
Docker version 27.3.1, build ce12230  
takatoh@apostrophe:~$ docker version  
Client: Docker Engine - Community  
 Version:           27.3.1  
 API version:       1.47  
 Go version:        go1.22.7  
 Git commit:        ce12230  
 Built:             Fri Sep 20 11:40:59 2024  
 OS/Arch:           linux/amd64  
 Context:           default  
  
Server: Docker Engine - Community  
 Engine:  
  Version:          27.3.1  
  API version:      1.47 (minimum version 1.24)  
  Go version:       go1.22.7  
  Git commit:       41ca978  
  Built:            Fri Sep 20 11:40:59 2024  
  OS/Arch:          linux/amd64  
  Experimental:     false  
 containerd:  
  Version:          1.7.22  
  GitCommit:        7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c  
 runc:  
  Version:          1.1.14  
  GitCommit:        v1.1.14-0-g2c9f560  
 docker-init:  
  Version:          0.19.0  
  GitCommit:        de40ad0  
takatoh@apostrophe:~$ docker compose version  
Docker Compose version v2.29.7