Windows 10にRancher Desktopをインストールする

# What's？

WindowsでDockerを使いたい、でもDocker Desktopはちょっと…ということで、Rancher Desktopを使ってみます。

# Rancher Desktop

Rancher Desktopは、SUSEが開発しているコンテナ、Kubernetesを操作できるアプリケーションです。

https://rancherdesktop.io/

インストール方法はこちら。

https://docs.rancherdesktop.io/1.18/getting-started/installation/

Windowsの場合は、事前にWSLをインストールしておく必要があります。

[Installation / Windows](https://docs.rancherdesktop.io/1.18/getting-started/installation/#windows)

というわけで、インストールします。

# 環境

Windows 10。

# WSLをインストールする

こちらで。

```powershell
PS > wsl --install
```

https://learn.microsoft.com/ja-jp/windows/wsl/install

インストールされたWSLのバージョン。

```powershell
PS > wsl --version
WSL バージョン: 2.4.13.0
カーネル バージョン: 5.15.167.4-1
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5716
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.19045.5608
```

Rancher Desktopをインストールするにあたり、ディストリビューションは入れなくてもよさそうです。

# Rancher Desktopをインストールする

ドキュメントには載っていませんでしたが、Rancher Desktopはwingetでもインストールできるようです。

```shell
PS > winget search rancher
名前            ID                  バージョン 一致         ソース
------------------------------------------------------------------
Rancher Desktop SUSE.RancherDesktop 1.18.2     Tag: rancher winget
k3d             k3d.k3d             5.8.3      Tag: rancher winget
```

後々のアップデートなども考えるとwingetでインストールした方がよい気がしたので、今回はwingetでインストールすることにします。

```powershell
PS > winget install SUSE.RancherDesktop
```

インストール後、Rancher Desktopを起動するとこんなダイアログが表示されますが、個人的には現時点でKubernetesは使わないので「Enable Kubernetes」のチェックを外しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309669/83899175-2531-448d-8bb6-7bd2bb311eb5.png)

確認すると、WSLでRancher Desktop用の仮想マシンが動いているようです。

```powershell
PS > wsl -l -v
  NAME                    STATE           VERSION
* rancher-desktop         Running         2
  rancher-desktop-data    Stopped         2
```

PowerShellを起動しなおすと、`docker`コマンドが使えるようになっています。

```powershell
PS > docker version
Client:
 Version:           27.5.1-rd
 API version:       1.45 (downgraded from 1.47)
 Go version:        go1.22.11
 Git commit:        0c97515
 Built:             Thu Jan 23 18:14:31 2025
 OS/Arch:           windows/amd64
 Context:           default

Server:
 Engine:
  Version:          26.1.5
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.22.5
  Git commit:       411e817ddf710ff8e08fa193da80cb78af708191
  Built:            Fri Jul 26 17:51:06 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.7.17
  GitCommit:        3a4de459a68952ffb703bbe7f2290861a75b6b67
 runc:
  Version:          1.1.14
  GitCommit:        2c9f5602f0ba3d9da1c2596322dfc4e156844890
 docker-init:
  Version:          0.19.0
  GitCommit:
```

Docker Composeも使えそうですね。

```powershell
PS > docker compose version
Docker Compose version v2.33.0
```

nginxで確認。

```powershell
PS > docker container run -it --rm --name nginx -p 80:80 nginx:latest
```

実行中のコンテナ。

```powershell
PS > docker container ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS        PORTS                               NAMES
09b1b45db9e9   nginx:latest   "/docker-entrypoint.…"   2 seconds ago   Up 1 second   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
```

アクセスしてみます。

```powershell
PS > curl http://localhost


StatusCode        : 200
StatusDescription : OK
Content           : <!DOCTYPE html>
                    <html>
                    <head>
                    <title>Welcome to nginx!</title>
                    <style>
                    html { color-scheme: light dark; }
                    body { width: 35em; margin: 0 auto;
                    font-family: Tahoma, Verdana, Arial, sans-serif; }
                    </style...
RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    Accept-Ranges: bytes
                    Content-Length: 615
                    Content-Type: text/html
                    Date: Thu, 27 Mar 2025 04:32:19 GMT
                    ETag: "67a34638-267"
                    Last-Modified: Wed, 05 Feb 2025 ...
Forms             : {}
Headers           : {[Connection, keep-alive], [Accept-Ranges, bytes], [Content-Length, 61
                    5], [Content-Type, text/html]...}
Images            : {}
InputFields       : {}
Links             : {@{innerHTML=nginx.org; innerText=nginx.org; outerHTML=<A href="http:/
                    /nginx.org/">nginx.org</A>; outerText=nginx.org; tagName=A; href=http:
                    //nginx.org/}, @{innerHTML=nginx.com; innerText=nginx.com; outerHTML=<
                    A href="http://nginx.com/">nginx.com</A>; outerText=nginx.com; tagName
                    =A; href=http://nginx.com/}}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 615



```

OKですね。

割と簡単に入れられました。これからは、Windows上ではこちらを使ってコンテナを利用していきたいと思います。