Windows11でWSL2上のUbutuにDockerとValKeyインストールするまで

# 1,はじめに
 はじめてQiitaへ投稿するのですが、これ、マークダウン方式 で書かないといけないんですね。。。。mixiとはえらい違い。
 ValKeyの記事が少なかったので、備忘録の意味も込めて書いていきます。
 (開発に使うかもなのでそのメモ的な意味が大きい。。。笑)

# 2,ValKeyをUbutuにインストールするまで
概要
* ValKeyとは
* WindowsTerminalをインストール
* WSL2とValKey_WSL2とUbuntuをインストール
* ValKeyをインストール
* 動作確認(次回へ続く？)(

## 1.ValKeyとは
詳しい説明は参考ULRへ飛んでいただきたいので、ここではざっくりと説明します。


ValKeyはDBです。ただごく一般的に使用されているリレーショナルDBとは違い、KeyValue方式でメモリにデータを保持します。

このメモリにデータを保存させるDBをインメモリデータベースと言い、HDDやSDDへ書き込む普通のDBより高速で使えるというメリットがあります。

ここで1つ疑問が浮かぶと思います。

なんで便利なのに記事が少ないの？

はい。その理由は、
### 大人の事情です。。。

これ、冗談ではなく、ほんと。

もともとはRedisというインメモリDBを多くの企業が使用していたのですが、RedisはOSS(オープンソース・ソフトウェア)で開発・運用されていました。

ただAWSなどのクラウド企業がたくさん使うけど儲からない(真相はしりません)から、商用利用に制限かけるね！

とうことでRedisをライセンス制にしたのです。

それに怒ったAWSがLinux foundationという組織をそそのかしたか知りませんが、支援して、Redisをフォークし作られたのが「ValKey」です。

前置き長いですね。

長いついでに、「フォーク」という言葉ですが、GitHubで使用される、あれです。そうです、まるっとコピーです。ValKey調べ始めたときはフォークの意味を知らなかたのですが、たまたまgitについての本を読み始めたら、書いていました。豆でした。
(参考:[OSSのRedisに代わるデータベース〜Valkey〜](https://www.designet.co.jp/ossinfo/valkey/) )

## WindowsTerminalをインストール
事前準備として、WindowsTerminalをインストールしましょう。
[Windows ターミナルをインストールしてセットアップを開始する](https://learn.microsoft.com/ja-jp/windows/terminal/install)

## WSL2とValKey_WSL2をインストール
記事を書いている段階ではWindowsだけではValKeyが動かないっぽい？のでUbuntuをかませることにしました。

Dockerデスクトップ使えばできそうですが、ここではWSL2を使用してみたいと思います。

まず、Windows PowerShell を管理者権限で起動してください。

起動したら、

```
wsl --install -d Ubuntu-22.04
```

でUbuntu-22.04がインストールされると思います。

Ubuntu-22.04はUbuntuのバージョンなので、公式を見つつ自分で選んでみてください。

最新版はバクありそうなので、2つ目に新しいのを選んだだけです。

インストールできなかった方は、Windowsの設定をいじらないといけない(仮想化を許可するとか)

#### ＊＊＊以下Germiniの回答＊＊＊
Windowsで仮想化を許可するには、BIOS/UEFI設定で仮想化機能を有効にする必要があります。仮想化機能は、Hyper-Vなどの仮想環境ソフトウェアを使用するために必須です。
BIOS/UEFI設定での仮想化有効化手順

    再起動:
    コンピューターを再起動し、BIOS/UEFI設定画面に入るためのキーを押します。このキーは、お使いのPCのメーカーやモデルによって異なります（F2、Del、Escなどが一般的です）。

    仮想化機能を探す:
    BIOS/UEFI設定画面では、仮想化機能は「Virtualization」、「VT-x」、「AMD-V」などの名前で表示されていることがあります。これらの項目を探し、有効にします。
        Intelプロセッサ: VT-x (Intel Virtualization Technology)
        AMDプロセッサ: AMD-V (AMD Virtualization)

    注意: BIOS/UEFIの設定は、誤った操作を行うとコンピューターが起動しなくなる可能性があります。慎重に行ってください。

    保存して終了:
    設定を変更したら、保存してBIOS/UEFI設定画面を終了します。

Windows機能でのHyper-Vの有効化

BIOS/UEFIで仮想化を有効にした後、Windowsの機能からHyper-Vを有効にします。

    Windowsの検索ボックスに「Windowsの機能の有効化または無効化」と入力し、Enterキーを押します。
    Windowsの機能のウィンドウで、「Hyper-V」にチェックを入れ、OKボタンをクリックします。
    再起動: コンピューターを再起動します。

確認方法

Hyper-Vが正しく有効になっているか確認するには、以下の方法があります。

    タスクマネージャー: タスクマネージャーを開き、「パフォーマンス」タブの「CPU」を確認します。仮想化が有効になっている場合、「仮想化」の項目が表示され、有効になっていることが確認できます。
    PowerShell: PowerShellを開き、以下のコマンドを実行します。
    PowerShell

    Get-VMHost

    コードは注意してご使用ください。

Hyper-Vが有効になっている場合、ホストの情報が表示されます
#### ＊＊＊ここまで＊＊＊

たぶんこれやればWSLが動いてくれ、Ubuntuが立ち上がると思います。

※
もともとWSLを入れていてディストリビューションがない。というエラーが出る方は、WSLを更新しないと行けないようです。
[WslRegisterDistribution failed with error: 0x800701bc](https://qiita.com/hali/items/bf04a1e4012025a38d6b)
[WSL 2のインストールと更新](https://sk-lb.net/misctools-wsl2/)

## Valkeyをインストール

のちのちDockerをUbuntuで使うのですが、その際、

「System has not been booted with systemd as init system (PID 1). Can't operate.」

というエラーが出てハマりました。

[「System has not been booted with systemd as init system (PID 1). Can't operate.」のエラー解決](https://qiita.com/rfukudome/items/323fbcd541a9e90e55c7)

結論、wslをupdateすれば解決しました。

なので、ここで一応PowerShellからupdate
```
wsl --update
wsl --shutdown
```

その後、Windows ターミナルからUbuntuを選び、起動。

立ち上がったUbuntuへ

Dockerを入れていきます。
以下コピー貼付けで、いっぺんに動いてくれます。多分。
```
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-compose-plugin
```

Dockerのインストールが終わったので、起動させます。
```
sudo service docker start
```
確認のため、Hello,worldのイメージが動くか確認しましょう
```
sudo docker run hello-world
```
[Docker Desktopを使わずにWindowsでDocker](https://eng-blog.iij.ad.jp/archives/14205)


そして、ついにvalkeyをインストールします。
公式から取ってきたpullコードを貼り付けます。
```
sudo docker pull valkey/valkey
```
[valkey DockerHub公式](https://hub.docker.com/r/valkey/valkey/)

起動
```
sudo docker run valkey/valkey
```
起動できましたでしょうか？？

## 動作確認
現状やりたいことはEclipseからvalkeyへのデータ登録・取得がやりたいことなので、こちらは、別記事で書けたらなー。とか思っていますが、定かではありません。


出たばかりのvalkeyで記事が少なかったので書いてみました。
皆様の一助になれれば幸いです。