Rootlessモード
ホストOSにおいて,root以外のユーザがDockerデーモンとDockerコンテナを実行できるようにするもの.
コンテナ内でroot権限を用いることは問題ない.
#cpt
Dockerにおける「Rootlessモード」とは、ホスト上でroot権限を持たずにDockerデーモンやコンテナを実行するモードです。これは、セキュリティを強化し、特権昇格のリスクを減らすために設計されています。
Docker デーモンをルート以外のユーザで実行(Rootless モード) — Docker-docs-ja 24.0 ドキュメント
Rootless モード(Rootless mode)は Docker デーモンとコンテナを root 以外のユーザが実行できるようにするもので、デーモンやコンテナ・ランタイムにおける潜在的な脆弱性を回避します。
Rootless モードは Docker デーモンのインストールに root 権限を必要としないだけでなく、 事前準備 においても不要です。
Rootless モードは Docker Engine v19.03 から導入されました。
Docker Rootless モードについて
Rootlessモードが登場する以前、root以外のユーザはDockerを利用するのに
sudoをつけてdockerコマンド実行
一般ユーザをdockerアクセス可能なグループに追加
/var/run/docker.sockの権限を変更
などいずれかの対応が必要でした。
これらに対し、ユーザごとにDockerデーモン実行しちゃおうぜ!というのがRootlessモードです。
Rootlessモードの挙動
ユーザはDockerコンテナを起動する際,次のことを行っている.
1. ユーザがDockerコマンド(例: docker run -it ubuntu:22.04 bash)をシェルに入力する.
2. シェルがDockerコマンドをexecve()等で実行する.
3. DockerコマンドはUNIXドメインソケットを用いて,Dockerデーモンにコマンドの実行を依頼する.
4. DockerデーモンはUNIXドメインソケットを用いて,Dockerコマンド指定の方法でcontainerdにコンテナの作成・起動を依頼する.
5. containerdはカーネルが提供するシステムコールを用いてコンテナを作成する.
Docker Rootless モードについて
https://scrapbox.io/files/6809c5b6283c5418a7cba47b.png
Rootlessモード【でない】場合,Dockerデーモンとcontainerdはrootユーザのプロセスとして実行される.
Rootlessモード【である】場合,Dockerデーモンとcontainerdはroot【以外の】ユーザのプロセスとして実行される.