目次
環境
ホストOS: Ubuntu 24.04 LTS
LXDのバージョン: LXD 5.21 LTS
LXDコンテナーのセキュリティ設定
Nesting (Containers only)orsecurity.nesting: コンテナー内でのコンテナー(ネスト)の実行を許可するかどうかAllowortrueに設定
Dockerを動かすために必要Idmap size (Containers only)orsecurity.idmap.size: 使用するIDマップのサイズ
コンテナー内のユーザ数によって設定する値が変動する
以降、標準のUbuntu 24.04イメージで説明する
デフォルトではubuntuという一般ユーザが作られているが、今回は新たな一般ユーザを作成することにする
詳しいことは省くが、Dockerに割り当てるUIDが65536個必要なため、設定変更しないとUIDが不足する
ユーザー名前空間の開始UIDは100000、そこから各ユーザに65536個割り当てるため、100000 + 65536 × ユーザ数個のUIDが必要になる
今回だと、ubuntuとrunnerユーザが存在するため、231072個の割り当てが必要になる
自分の環境では231072に設定Unique idmap (Containers only)orsecurity.idmap.isolated: 一意のIDマップを使用するかどうかYesortrueに設定
セキュリティが向上する
Dockerのインストール
公式ドキュメントの手順に従ってインストールしている前提で進める
Rootless Dockerのセットアップ
ここからの作業はLXDコンテナー内で行う
あらかじめDockerを実行したいユーザを作成しておく
1. 準備
uidmapのインストール、Rootful Dockerの無効化、systemdのユーザインスタンスを自動起動
Bash
sudo apt install uidmap
sudo systemctl disable --now containerd
sudo systemctl disable --now docker
sudo systemctl disable --now docker.socket
sudo loginctl enable-linger {ユーザID}2. 環境変数の設定
Dockerを動かしたいユーザにログインする
ログイン後、~/.profileや~/.bashrcなどに下記内容を追記する
Bash
export XDG_RUNTIME_DIR=/run/user/{ユーザID}
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/{ユーザID}/docker.sock3. Rootless Dockerのインストール
Dockerを動かしたいユーザにログインする
Bash
dockerd-rootless-setuptool.sh install4. 実行テスト
Bash
docker run hello-worldここでエラーが出なければ成功
