[Mac(M1)] Rancher Desktopを試してみた

Mac(M1)でRancher Desktopを試してみました。
事例報告は多い方がいいだろうと考え、自分の状況をあれこれ共有しておきます。
たぶん時期も重要なので、本記事は2022年2月6日に書いていることを強調しておきます。


## 背景

MacBook Pro(2021)を買うと同時に新プロジェクトに参加し、そこで作成したコンテナが激重でした。
重くて仕方ない構成だったのもあり、我慢して使ってたのですが...

[『M1 Pro + Docker for Macが遅い』](https://qiita.com/naomichi-y/items/1e676139e3f9fbc75d3c)

> ただでさえDocker for Macは遅いのにM1と組み合わせることで更に悪化する。大枚はたいて買ったM1 Proでアプリケーションのベンチマークとったら (3年前の) Intel Macbook Proの構成より遅くて衝撃を受けた。

この記事で衝撃を受けたのと、ちょうどRancher Desktopリリースの記事を読んで気になってたのがきっかけで試してみる気になりました。


## 前提

* 既にDocker Desktopをインストール済みである
    * 初めからRancher Desktopだけ入れるのと、Docker Desktopから移行するのとでは色々違うはず
* Rancher Desktopに完全に切り替えるのは怖かったので、一応 Docker Desktopも残しておきたい
* 2022年2月6日現在、Rancher Desktopのバージョンは1.0.1


## Rancher Desktopのインストール

まずは、Docker Desktopを終了(≠アンインストール)しておきます。
当然この状態ではdockerコマンドを叩いてもエラー（docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock.）になります。

https://rancherdesktop.io/ からdmgファイルをダウンロードして、インストールしました。
Rancher Desktopを起動し、Kubernetesのバージョンは"v1.22.6(stable)"、コンテナランタイムはせっかくなので"containerd"を選択しました。

[『Rancher Desktop を始める』](https://qiita.com/ryota_hnk/items/bc5399f2c80fcbe3a4c7)
> nerdctlは自動で入って（中略）macはアプリの初回起動時に行われるよ

らしいのですが、自分の環境では`nerdctl`を叩いても"zsh: command not found: nerdctl"と怒られます。
パスが通ってないだけ？ "Insufficient permission to manipulate /usr/local/bin: Error: EACCES: permission denied, access '/usr/local/bin'"と表示されているのがその理由かもしれません。

![スクリーンショット 2022-02-05 14.36.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11338/219416fe-ef07-fc83-da29-aeac248c42ca.png)

https://docs.rancherdesktop.io/faq/ を見ると、

> A long-term solution to improve the handling of permissions is in the works. In the meantime, a temporary workaround is to change ownership of /usr/local/bin by running `sudo chown $USER /usr/local/bin`.

とあります。
ここで諦めてしまったけど、その後の文を読んだら、上記実施後にRancher Desktopを再起動するだけで良かったかも。

> When you are able to write to the directory, Rancher Desktop is able to create the symlinks.

この後しばらく待つと、画面左下で進捗を表示していたKubernetesコンテナイメージのダウンロードが終わり、Imagesに一覧が表示されるようになりました。


## コンテナランタイムの切り替え

Kubernetes Settingsにてコンテナランタイムを"dockerd"に変更すると、dockerコマンドが使えるようになります。これだけでも、今まで激重だったコンテナがだいぶ軽くなったような？


## 考察

バージョン1.0.1とはいえ、まだ機能的に成熟してない感があります。Docker有償化に合わせた、ビジネス的な事情とかあるのかな...
個人的には、Mac起動時に自動的にアプリが起動する設定が欲しいところ（Docker Desktopにはある）。
 
あと、Docker(Desktop)からの移行であれば、ランタイムはdockerdが無難かもしれません。


## 2/6追記

> 自分の環境ではnerdctlを叩いても"zsh: command not found: nerdctl"と怒られます。

`sudo chown $USER /usr/local/bin`を実行し、Rancher Desktopを起動（コンテナランタイムは"containerd"）、Supporting Utilitiesにて"/usr/local/bin/nerdctl"にチェック入れたら使えるようになりました。
エラーメッセージも消えています。

**注) この状態のままMacを再起動したら起動しなくなりました!!**
(感嘆符と"support.apple.com/mac/restore"だけ表示された状態、下記参照)
https://support.apple.com/ja-jp/HT211868?cid=mc-ols-mac-article_ht211868-macos_ui-09292020

少なくとも、リンク作成後はchownを元に戻す必要がありそうです。

![スクリーンショット 2022-02-06 11.57.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11338/379b0b86-28e1-76a2-c1e7-8bf1da532b81.png)

## 2/7追記

`docker login`しようとすると、"Error saving credentials: error storing credentials - err: exit status 1, out: `Post "http://ipc/registry/credstore-updated": dial unix /Users/MY_NAME/Library/Containers/com.docker.docker/Data/backend.sock: connect: connection refused`"というエラーが出ることを確認。

[『【Docker】docker loginをするときにError saving credentials: error storing credentialsがでてログインできないときの話』](https://qiita.com/P2eFR6RU/items/180d6de4c52f36b7adc0)を参考にconfig.jsonをのぞいてみると、下記のようになっていた。

```
{
  "credsStore" : "desktop"
}
```

この"desktop"って"Docker Desktop"のことだろうか...Rancher Desktopの代わりにDocker Desktopを立ち上げた状態で`docker login`したら"Login Succeeded"した。