0
0

WSL上のdockerコマンドをsudoを付けずに実行できるようにしてみる

Posted at

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 daemon attack surface

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

確認すると既にグループが作成されている事がわかります。

image.png

## ユーザーの登録 & ログアウト

# dockerグループに実行ユーザーを登録
sudo usermod -aG docker $USER
# 一度ログオフ
exit 

上記のコマンドでdockerグループに実行ユーザーを登録します。

また登録後にユーザーをログオフして、再ログインする事でグループ設定を再評価します。

なおドキュメントには仮想マシンでLinuxを実行している場合、再起動が必要になる場合があると記載されていましたが、本環境では仮想マシンの再起動までは必要ありませんでした。

sudoなしでhelloworldを実行

 docker run hello-world

image.png

sudoなしでhelloworldが実行できました。

総評

dockerグループにユーザーを追加するだけなので対した作業ではありませんが。

dcokerをroot以外で利用させる部分について。

セキュリティリスクまで考慮して利用となると、色々と確認点が多く深い世界になりそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0