Windows11(WSL2)上のUbuntuにDocker EngineをインストールしてLinuxコンテナを実行してみる
上記記事でWindows上のWSL2にdockerをインストールして環境構築の記事を書きましたが。
上記記事ではdockerコマンドを実行する際にsudoする必要がありました。
本記事では非管理者ユーザーで実行できるように設定していきます。
ドキュメント
Manage Docker as a non-root user
今回利用する環境
- Windows 11 23H2
- WSL2上のUbuntu 22.04
- Docker Engine - Community 27.0.3
対応方法は2パターン
dockerコマンドをrootユーザー以外で実行するためには下記2パータンの方法があるようです。
- ①パッケージインストール時に作成されるdockerグループへユーザーを登録する(登録したユーザーはルート相当の権限を持つ)
- ②DockerのRootless モードを利用する
本記事では①のdockerグループにユーザーを登録する方法で、sudoを付けずにdockerコマンドを実行できるように調整していきます。
なおdockerグループにユーザーを登録する事で、rootレベルの権限をユーザーへ付与する事なります。
またこれがセキュリティリスクについてどのように影響するかは下記のようなドキュメントが公開されています。
DockerのRootlessモードについて
Run the Docker daemon as a non-root user (Rootless mode)
本記事では実施しませんが、DockerではRootlessモードが用意されており、こちらを利用する事でもsudoを付けずにdockerコマンドを実行できるようになります。
RootlessモードはDockerデーモンとコンテナをroot以外のユーザーが実行する機能となるようです。
Rootlessモード登場当初は実験的な機能としてリリースされていたようですが、Docker 20.10から正式機能に昇格しているようです。
なお、Rootlessモードについては、通常のdockerに比べていくつかの制約があるようなので、利用する際には注意が必要なようです。
グループの確認
前回紹介した記事では、パッケージからdockerをインストールしているため、すでにdockerグループが用意されているとの事なのでグループを確認してみます。
cat /etc/group | grep docker
確認すると既にグループが作成されている事がわかります。
## ユーザーの登録 & ログアウト
# dockerグループに実行ユーザーを登録
sudo usermod -aG docker $USER
# 一度ログオフ
exit
上記のコマンドでdockerグループに実行ユーザーを登録します。
また登録後にユーザーをログオフして、再ログインする事でグループ設定を再評価します。
なおドキュメントには仮想マシンでLinuxを実行している場合、再起動が必要になる場合があると記載されていましたが、本環境では仮想マシンの再起動までは必要ありませんでした。
sudoなしでhelloworldを実行
docker run hello-world
sudoなしでhelloworldが実行できました。
総評
dockerグループにユーザーを追加するだけなので対した作業ではありませんが。
dcokerをroot以外で利用させる部分について。
セキュリティリスクまで考慮して利用となると、色々と確認点が多く深い世界になりそうです。