Ubuntu 20.04.2 LTS (Focal Fossa)のdockerをRootless modeでインストールしなおす

はじめに

私のマシンでは、dockerをインストールするのに、公式のリポジトリからインストールしていた。

ところが、この方法でインストールすると、dockerデーモンのプロセスがrootでうごいてしまっているために、sudoを使用する必要がある。

sudoを使用すれば、動かすことは可能なのだが、問題が出てきた。

  • dockerコンテナ内で生成したファイルがrootユーザーで作成されてしまうこと
  • ある種のフレームワークによって docker build を動かすときにsudoをつけることができないこと
    • 私が問題に直面したのは serverless framework 内で docker build するときにつまづいた

そういうわけで、sudo をつけてdockerを動かすことには問題が出てきたのだが、dockerには Rootless mode というモードが存在するらしい。

Rootless モード(Rootless mode)は Docker デーモンとコンテナを root 以外のユーザが実行できるようにするもので、デーモンやコンテナ・ランタイムにおける潜在的脆弱性を回避します。

https://docs.docker.jp/engine/security/rootless.html

Rootless modeを使用することによって、sudoをつけなくても良くなりそうなので、この記事ではその方法を記載していく。

なお、ここに記載の方法は、ほぼ下記URLの方法をやっているだけなので、参考程度にみていただければと思う。

docs.docker.jp

また、私の環境ではシェルに fish を使っているので、fish 用の設定が出てくるので、あしからず

方法

1 現在インストール中のdockerをアンインストールする

sudo apt list --installed | grep docker
sudo apt remove 'docker*'

2 rootlessモードでインストールする

bash
curl -fsSL https://get.docker.com/rootless | sh

3 fishのパス設定

nvim ~/.config/fish/config.fish
set -x PATH /home/$USER/bin $PATH
set -x DOCKER_HOST unix:///run/user/(id -u $USER)/docker.sock

4 dockerコマンド確認

docker -v

5 docker-composeをインストールする

sudo apt install python3-pip
pip3 install docker-compose

6 fishのパス設定

nvim ~/.config/fish/config.fish
set -x PATH $HOME/.local/bin $PATH

7 docker-composeコマンド確認

docker-compose -v

以上