zukucode
主にWEB関連の情報を技術メモとして発信しています。

wsl2にインストールしたDockerを自動起動する

wsl2Ubuntu環境にインストールしたDockerを自動起動する方法を紹介します。

Docker Desktopではなく、Ubuntuの環境にDockerをインストールした場合についての記事になります。

wsl2Ubuntu環境にDockerをインストールする方法はWindows10のWSL2(Ubuntu)にDockerをインストールするで紹介しています。

権限の付与

自動起動の設定をするにあたって、まずは管理者権限でなくてもdockerコマンドを実行できるようにします。

以下のコマンドで、Ubuntuのデフォルトユーザー(インストール時に作成したユーザー)をdockerグループに追加します。

dockerグループはdockerをインストールしたら自動で作成されます)

$ sudo usermod -aG docker ユーザー名

ユーザー名の部分は以下のコマンドで確認できます。

$ whoami

自動起動の設定

Ubuntuのターミナルを起動し、以下のコマンドを実行するとターミナルが編集画面に切り替わります。

$ sudo visudo

編集画面の末尾に以下の内容を追加します

%docker ALL=(ALL)  NOPASSWD: /usr/sbin/service docker start

visudoでの編集はターミナル上でのファイル編集になるため、メモ帳などとは勝手が違います。

以下の手順で行います。

1. iで入力モードに変更する 2. メモ帳と同じ要領でカーソルを移動してテキストを入力する 3. Escで入力モードを終了する 4. 「:w」と入力してファイルを保存する 5. 「:q」と入力してvisudoを終了する

「~/.bashrc」のファイルに以下を追加します。

~/.bashrc
if [ $(service docker status | awk '{print $4}') = "not" ]; then
  sudo service docker start > /dev/null
fi

動作確認

以下のコマンドをホストOSのコマンドプロンプトやPowerShellなどで実行し、wslを再起動します。

(--shutdownコマンドはwslをシャットダウンするコマンドです)

$ wsl --shutdown

UbuntuのターミナルでDckerサービスの状態を確認し、起動していることが確認できます。

Ubuntuのターミナルを起動するとシャットダウンしたUbuntuが自動で起動します)

$ service docker status
* Docker is running

関連記事