まるでDocker Desktop！！Rancher Desktopの登場です

[7/10更新]末尾に[Docker DesktopとRancher Desktop](https://qiita.com/moritalous/items/14d4099023981dcf4fd2#docker-desktop%E3%81%A8rancher-desktop%E3%81%AE%E6%AF%94%E8%BC%83)の比較を追加しました。

---

Ranchar社から`Ranchar Desktop`が登場しました。

https://japan.zdnet.com/article/35182825/

公式サイトはこちら

https://rancherdesktop.io/

![rancherdesktop.io_(iPad Air).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/6b84ba3b-1199-fb81-cd97-2e386a6e5a59.png)

なんとなく、Docker Desktopの代わりになりそうに見えます。

# Ranchar Desktopのインストール

公式のインストール手順はこちら。

https://docs.rancherdesktop.io/installation#windows

Widnows、macOS、Linuxに対応しています。

特にWindowsについては

> Rancher Desktop requires Windows Subsystem for Linux on Windows; this will automatically be installed as part of the Rancher Desktop setup. Manually downloading a distribution is not necessary.

とのことで、WSLの設定も勝手にやってくれるようです。
ただ、私の環境はすでにWSL2と、WSL2上のDockerが構築済みの状態です。

インストーラーを入手し、ウィザードに従ってインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/b439a837-e23e-3822-b8f6-484b32321d95.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/c4471ec9-b86e-415d-4acc-b8e3bb8407ef.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/733ff381-a7dc-1c1e-01b3-7b869bf43a22.png)


# Rancher Desktopを使ってみる

初回起動時に`Container Runtime`の選択ダイアログが出ます。WSL2上にDockerの環境を導入済みだからか、`dockerd (moby)`がデフォルトで選択されていました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/6dd1be6e-0e8d-fc99-7275-6bc4fa0966a4.png)

Acceptを押すと、Ranchar Desktopが起動します。
しれっと、Kubernetesがダウンロードされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f00185bf-797b-b6af-2403-9c281d55fe55.png)

画面を一通り眺めてみます

* Kubernetes Settings

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/c393cdd9-848c-a628-cd99-1bf5e866bf1e.png)

* WSL Integration

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/11025965-e17f-8236-14c8-2bb602473739.png)

* Port Forwarding

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/d09c196f-188f-c199-820d-8a67e7f42db1.png)

* Images

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/863ee573-fe1f-0727-1062-10c8c898ecb8.png)

* Troubleshooting

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/c754aedc-15a7-4f4e-d655-6d726582e17b.png)


で、何ができるのかしら？

# Windows環境で`docker`コマンドが使えるぞ！

```powershell
PS C:\> docker images
REPOSITORY                         TAG                    IMAGE ID       CREATED        SIZE
rancher/mirrored-library-traefik   2.5.6                  2cd4bc25ad14   5 weeks ago    101MB
rancher/local-path-provisioner     v0.0.21                fb9b574e03c3   6 weeks ago    35MB
rancher/mirrored-metrics-server    v0.5.2                 f73640fb5061   2 months ago   64.3MB
rancher/klipper-lb                 v0.3.4                 746788bcc27e   3 months ago   8.08MB
rancher/klipper-helm               v0.6.6-build20211022   194c895f8d63   3 months ago   241MB
rancher/mirrored-coredns-coredns   1.8.6                  a4ca41631cc7   3 months ago   46.8MB
rancher/mirrored-pause             3.6                    6270bb605e12   5 months ago   683kB
PS C:\>
```

__まるでDocker Desktop！！__

```powershell
PS C:\> docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

```

__まるでDocker Desktop！！__
（`hello-world`の実行はうまくいくのですが、実行中のままプロンプトが返ってきません。。なぜ？）

# Docker Composeもいける！！

```powershell
PS C:\> docker compose

Usage:  docker compose [OPTIONS] COMMAND

Docker Compose

Options:
      --ansi string                Control when to print ANSI control
                                   characters ("never"|"always"|"auto")
                                   (default "auto")
      --env-file string            Specify an alternate environment file.
  -f, --file stringArray           Compose configuration files
      --profile stringArray        Specify a profile to enable
      --project-directory string   Specify an alternate working directory
                                   (default: the path of the Compose file)
  -p, --project-name string        Project name

Commands:
  build       Build or rebuild services
  convert     Converts the compose file to platform's canonical format
  cp          Copy files/folders between a service container and the local filesystem
  create      Creates containers for a service.
  down        Stop and remove containers, networks
  events      Receive real time events from containers.
  exec        Execute a command in a running container.
  images      List images used by the created containers
  kill        Force stop service containers.
  logs        View output from containers
  ls          List running compose projects
  pause       pause services
  port        Print the public port for a port binding.
  ps          List containers
  pull        Pull service images
  push        Push service images
  restart     Restart containers
  rm          Removes stopped service containers
  run         Run a one-off command on a service.
  start       Start services
  stop        Stop services
  top         Display the running processes
  unpause     unpause services
  up          Create and start containers

Run 'docker compose COMMAND --help' for more information on a command.
PS C:\>
```

__まるでDocker Desktop！！__
（細かい点ですが、`docker-compose`はだめでした。）


# Windows環境で`kubectl`コマンドが使えるぞ！

```
PS C:\> kubectl get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.43.0.1    <none>        443/TCP   10m
PS C:\>
```

__まるでDocker Desktop！！__


# VSCodeのDocker拡張もいける

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/f47b39e2-a97a-bb42-c69e-f71c00e907f4.png)

__まるでDocker Desktop！！__

# VSCodeのDev Containerもいける！！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2f00dcdc-8d5e-6a98-c872-7ad2c739d5fe.png)

__まるでDocker Desktop！！__
（もう言うことはありません。大満足）

# ちなみに

もともとあったWSL2の環境とは別モノのようで、`rancher-desktop`と`rancher-desktop-data`が作成されています。

```powershell
PS C:\>  wsl -l -v
  NAME                    STATE           VERSION
* Ubuntu-20.04            Running         2
  rancher-desktop-data    Stopped         2
  rancher-desktop         Running         2
PS C:\>
```

# まるでDocker Desktop！！

いいんじゃないでしょうか！！

---

# Docker DesktopとRancher Desktopの比較

[2022/7/10追記]
Rancher Desktopの[公式サイト](https://rancher.com/products/rancher-desktop)で、Rancher Desktopの売りが記載されていました。（あくまでRancher Desktop側の言い分ですのでご参考まで）

| 項目 | Docker Desktop | Rancher Desktop |
| --- | :---: | :---: |
| コンテナイメージのビルド、プッシュ、プル	| ✅ | ✅ |
| スタンドアロンコンテナの実行	| ✅ | ✅ |
Visual Studio Codeなどの外部ツールとの連携	| ✅ | ✅ |
希望のKubernetesのバージョンの選択	| ❌ | ✅ |
ワークロードがKubernetesのアップグレードにどのように対応するかテスト	| ❌ | ✅ |
containerdとdockerdの選択	| ❌ | ✅ |