困ったことが起きたけど、現実逃避するのはやめて、ネタになるからいいじゃんとなだめながらうまく動くように取り計らったメモ。
概要
アップデートマネージャーで、追加のリポジトリ内のDockerを正常にしたら、無事、Dockerのアップデートがされるようになりました。
しかし、喜び勇んでDockerをアップデートしたら、Rootless modeで使っていたDockerが動かなくなりました。
Docker上で開発してるので、Rootless modeが動かないと、頭の中が現実逃避しだします。
なので、ズバッと解決しなくては。
弊環境はLinuxmint21.2なので、Linuxmint公式サイトによると、
https://linuxmint.com/download_all.php
ubuntu jammyなので ubuntu 22.04にあたります。
一応Docker公式
https://docs.docker.com/engine/security/rootless/
の通りにやったけどちゃんと動かなくすっかり沼ってしまいました。
以下、弊環境で動かした手順
Dockerのパッケージ一覧を表示して消していいかどうか確認し
Dockerを消し去る。
sudo apt list --installed | grep docker
sudo apt remove 'docker*'
公式サイトのInstall欄のWithout packagesタブに記載されている方法のcurlでインストールしてみる。
curl -fsSL https://get.docker.com/rootless | sh
すると、エラーで止まるので、指示通りにしてみる。
cat <<EOF | sudo sh -x
cat <<EOT > /etc/sysctl.d/50-rootless.conf
kernel.unprivileged_userns_clone = 1
EOT
sysctl --system
EOF
ってやるけど、エラーで止まる。
仕方がないのでrootlessが何してるんだか見てみる。
wget https://get.docker.com/rootless
xed ./rootless &
なんか、
kernel.unprivileged_userns_clone = 1
のエラー表示の箇所は、
cat /proc/sys/kernel/unprivileged_userns_clone
が1かどうかを判断しているので、
cat /proc/sys/kernel/unprivileged_userns_clone
をしてみてると、"1"になっていない模様。
しかし、
cat /etc/sysctl.d/50-rootless.conf
したら、
kernel.unprivileged_userns_clone = 1
はセットされている。
ということは、
sysctl --system
がうまく動いてない模様。
sudo sysctl --system
するけど、
/etc/sysctl.d/50-rootless.conf
の項目はエラーにならない。
sysctl --systemのやっていることは、
あれやこれやの設定ファイルから読み込むよ
Load settings from all system configuration files.
/run/sysctl.d/.conf
/etc/sysctl.d/.conf
/usr/local/lib/sysctl.d/.conf
/usr/lib/sysctl.d/.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf
※感謝 https://wa3.i-3-i.info/word14684.html
ということなので、
/etc/sysctl.d/50-rootless.confは読み込んでないっぽい。
なので、ここに書き込んじゃう。
sudo micro /etc/sysctl.d/99-sysctl.conf
に、
kernel.unprivileged_userns_clone = 1
を書き込む。
そしてまた読み込ませる。
sudo sysctl --system
なんと今度がエラーが無い模様。
なので、再度公式の
curl -fsSL https://get.docker.com/rootless | sh
をする。
ちゃんと、インストールされた模様。
/var/run/user/1000/にも、
dockerってフォルダが存在している模様。
Dockerを試す。
docker ps -a
ああ、無事rootless modeで起動できた。
しかし、いつものdocker起動してみると、
docker-composeが無いですよ、と言われた。
普通に入れてみる。
sudo apt-get install docker-compose docker-compose-plugin
無事、いつもの環境が起動しました。
ありがとうございます。