0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LinuxmintでDockerのupdateしたら、rootless modeで使っていたDockerが起動しなくなったけど、修復できた話

Last updated at Posted at 2023-08-04

困ったことが起きたけど、現実逃避するのはやめて、ネタになるからいいじゃんとなだめながらうまく動くように取り計らったメモ。

概要

アップデートマネージャーで、追加のリポジトリ内の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

無事、いつもの環境が起動しました。
ありがとうございます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?