【WSL】WSL ~ Docker-CE + Genie / 環境構築編 ~

■ はじめに

https://dk521123.hatenablog.com/entry/2021/11/14/224428

で、以下のように説明した。
~~~~
* WSLではsystemdがPID1で動いていないため、
 systemctlなどのコマンド(e.g. sudo systemctl start docker)が使えない
 => 使用する場合は「Genie」を導入する必要がある
~~~~

そこで、今回は、Genie を導入して、systemctlを使えるようにし
Docker/Docker composeを導入する

後日談

2024/03/10現在だと、もっといい方法がある。
後述「補足2:systemd の有効化」を参照。

目次

【1】genie
【2】前提条件
【3】構築手順
 1)Genieのインストール
 2)Docker インストール
 3)Docker compose インストール

【1】genie

* cf. genie(ジニー) = 精霊
* WSL2 (Windows Subsystem for Linux)で
 systemdを起動するためのツール

補足1
https://dk521123.hatenablog.com/entry/2021/09/30/163020

で説明した「Genie」とは別物。

補足2:systemd の有効化

* Genie を入れなくても、以下で行える

https://dk521123.hatenablog.com/entry/2024/03/10/230329

# systemd 有効
echo -e "[boot]\nsystemd=true" | sudo tee /etc/wsl.conf

# WSL再起動
wsl --shutdown
wsl

【2】前提条件

* Linux 環境

Windows でまだ用意していない場合
https://dk521123.hatenablog.com/entry/2021/11/14/224428

# Use WSL2
wsl --set-default-version 2
# 確認
wsl --status

# 使用可能な Linux ディストリビューションを一覧表示
# wsl --list --online
wsl -l -o

# Ubuntu をインストールする場合(今回は、Ubuntuを選択)
wsl --install -d Ubuntu

wsl --list --verbose

【3】構築手順

1)Genieのインストール

[1] リポジトリ設定を追加

sudo curl -s -o /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg

sudo chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg

sudo tee /etc/apt/sources.list.d/wsl-transdebian.list << _EOF_ > /dev/null
deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
_EOF_

[2] リポジトリ情報更新とインストール

# Genie install
sudo apt update && sudo apt install -y systemd-genie

[3] Genieの初期設定

# Backup
sudo cp /etc/genie.ini /etc/genie.ini.bak

# Timeout 60sec
sudo sed -i 's/systemd-timeout=240/systemd-timeout=60/g'  /etc/genie.ini
# ホスト名表示に-wslを追加されないように設定
sudo sed -i 's/update-hostname=true/update-hostname=false/g'  /etc/genie.ini
# cloudimg-rootfsエラーの設定
sudo e2label $(df / | awk '/\//{print $1}') cloudimg-rootfs
# sshdエラー回避の設定
sudo ssh-keygen -A

[4] Genie起動

genie -s

# 結構時間が掛かるかも。。。
# 「Waiting for systemd....!!!!!!」みたいに表示し、終わる

[5] サービス停止

sudo systemctl disable getty@tty1

[6] genieの自動起動設定
https://snowsystem.net/other/windows/wsl2-ubuntu-systemctl/

# WSL 起動時に Genie を自動起動
sudo vi /etc/wsl.conf
~~~~~~~~~~~~~
[boot]
systemd=true
~~~~~~~~~~~~~

# コマンドプロンプト(Windows)側で以下のコマンドをWSLを再起動

# WSLを停止
wsl --shutdown
# WSLを起動
wsl

# systemdがPID 1で起動していることを確認
ps -p 1
PID TTY          TIME CMD
   1 ?        00:00:00 systemd

2)Docker インストール

[1] Dockerのリポジトリ追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable"

[2] Docker-CE インストール

sudo apt update && sudo apt -y install docker-ce

[3] Dockerに関する設定

# Setting for no-sudo
sudo usermod -aG docker $USER
# Docker demon starts
sudo systemctl start docker
# Docker demon 自動起動設定
sudo systemctl enable docker

# 確認
sudo systemctl status docker

3)Docker compose インストール

* 以下の関連記事を参照のこと

Docker compose ~ Version 2 ~
https://dk521123.hatenablog.com/entry/2023/01/02/000000

参考文献

https://qiita.com/fjij/items/95e283ed2bff47a1a27c

関連記事

WSL2 ~ Docker Desktop / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2020/12/08/165505
WSL2 ~ Docker-CE / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2021/11/14/224428
WSL2 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/01/29/000000
WSL ~ Windows Terminal ~
https://dk521123.hatenablog.com/entry/2020/12/10/094125
Docker ~ Windows / 環境構築編 ~
https://dk521123.hatenablog.com/entry/2017/09/23/235818
Docker compose ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2022/04/28/000000
Docker compose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/05/21/222910
Docker compose ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker compose ~ docker-compose.yml ~
https://dk521123.hatenablog.com/entry/2020/12/18/152949
Docker compose ~ Version 2 ~
https://dk521123.hatenablog.com/entry/2023/01/02/000000
Docker compose ~ LocalStack/Glue4.0 ~
https://dk521123.hatenablog.com/entry/2023/03/25/021432
WindowsAWS CLIを使うには
https://dk521123.hatenablog.com/entry/2020/12/01/000000
LocalStack ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/14/010524
LocalStack ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2019/12/16/231149
LocalStack ~ awscli-local ~
https://dk521123.hatenablog.com/entry/2020/12/16/211127
ps コマンド ~ プロセス一覧の表示 ~
https://dk521123.hatenablog.com/entry/2018/02/02/181500