はじめに
私のマシンでは、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の方法をやっているだけなので、参考程度にみていただければと思う。
また、私の環境ではシェルに 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
以上