Mac で Docker Desktop から Rancher Desktop へ移行する
概要
この記事では、Mac で Docker Desktop から Rancher Desktop への移行について調査した内容をまとめます。
背景知識
なぜ Mac で Docker Desktop (or Rancher Desktop) が必要なのか?
語弊を覚悟で書くと、現状では Docker は基本的には Linux 上で動かすツールです。なので、Linux 以外の OS で Docker を利用するためにはなにかしらの方法で Linux を OS 上で動作させる必要があります。
Windows の場合は WSL という Linux カーネルを動作させる仕組みがありますが、Mac にはありません。
このため、Mac では Linux VM を立ち上げ、ホスト側で VM 上の /var/run/docker.sock
をマウントし、このソケット経由で Docker デーモンに命令するという方法が主流となっています。
これを手軽に実現できるようにしたのが、Docker Desktop(や Rancher Desktop)というアプリケーションになります。
Rancher Desktop とは
以下は、Rancher Desktop の Introduction にある Rancher vs Rancher Desktop からの引用です。
While Rancher and Rancher Desktop share the Rancher name they do different things. Rancher Desktop is not Rancher on the Desktop. Rancher is a powerful solution to manage Kubernetes clusters. Rancher Desktop provides a local Kubernetes and container management platform. The two solutions complement each other.
If you want to run Rancher on your local system, you can install Rancher into Rancher Desktop.
要約すると、Rancher Desktop は Rancher のデスクトップ版ではありません。Rancher は Kubernetes クラスタを管理するためのプラットフォームですが、Rancher Desktop はローカルの Kubernetes やコンテナを管理するためのアプリケーションです。
Rancher Desktop の内部的な仕組みは、以下のようになります。(Rancher Desktop ホームページの "How it works" より引用)
Mac の場合、Rancher Desktop は内部的には Lima を使って VM を立ち上げます。
Docker Desktop から Rancher Desktop への移行
筆者は、以下の環境で調査しました。
- Mac
- OS: Monterey 12.6
- CPU: M1 Pro
- Rancher Desktop: 1.6.1
Docker Desktop のアンインストール
まず、公式ドキュメントに従って、Docker Desktop の Troubleshoot
から Uninstall
します。(ゴミデータが残らないように事前に Clean / Purge data
しておいたほうがいいという記事も見かけるので、気になる人はアンインストール前に実行しておくといいかもしれません)
アンインストールを実行しても、Mac の Applications
ディレクトリに Docker のアプリケーションが残ったままになるので、手動でゴミ箱に入れておきましょう。
Rancher Desktop のインストール
基本的には公式ドキュメントに従います。
まず、Rancher Desktop のリリースページから、アーカイブをダウンロードします。自分は M1 Mac なので、"Rancher.Desktop-1.6.1.aarch64.dmg" をダウンロードしました。
アーカイブを実行すると Mac おなじみのアイコンを "Applications" ディレクトリに D&D するダイアログが表示されるので、D&D します。
Rancher Desktop の初期設定
Rancher Desktop アプリケーションを開くと、以下のように Welcome to Rancher Desktop
という初期設定ダイアログが表示されます。
Enable Kubernetes
は、ローカルで Kubernetes クラスタを動かす必要がないならチェックを外しましょう。
containerd
と dockerd (moby)
は、これまで通り Docker CLI を使いたいのであれば、dockerd (moby)
を選択しましょう。(containerd
を選択すると、Docker CLI の代わりに nerdctl
コマンドを使うことになります)
Configure PATH
は、Automatic
にすると利用中のシェルのプロファイル(e.g. $HOME/.zshrc
)に、PATH
に $HOME/.rd/bin
を追加する設定が自動で入ります。基本的には Automatic
で困りませんが、PATH
の順番を意図的に変更したい場合などは Manual
を選択し、自分でシェルのプロファイルを設定して PATH
に $HOME/.rd/bin
を追加しましょう。(自分の場合、asdf
でインストールする kubectl
が優先的に選ばれてほしかったので、自分でシェルのプロファイルを修正しました)
初期設定が終わると、Administrative Access Required
という管理権限を要求するダイアログが表示されます。Always run without administrative access
のチェックは外したままで OK
を押し、Mac のパスワードを入力しましょう。
動作確認
初期設定が終わると、Rancher Desktop が立ち上がり、Starting virtual machine
という VM を起動するメッセージなどが表示されます。起動時のメッセージが消えたら、ターミナルを立ち上げ、docker version
コマンドでも叩いて動作確認してみます。
$ docker version
Client:
Version: 20.10.17-rd
API version: 1.41
Go version: go1.17.11
Git commit: c2e4e01
Built: Fri Jul 22 18:32:57 2022
OS/Arch: darwin/arm64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.18
API version: 1.41 (minimum version 1.12)
Go version: go1.18.6
Git commit: e42327a6d3c55ceda3bd5475be7aae6036d02db3
Built: Sun Sep 11 07:10:00 2022
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: v1.6.8
GitCommit: 9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc:
Version: 1.1.4
GitCommit: 5fd4c4d144137e991c4acebb2146ab1483a97925
docker-init:
Version: 0.19.0
GitCommit:
無事動きました。
あとは、普段の自分の開発で使うコマンドなどを試して、問題なく動作することを確認してみましょう。
既知の問題
大量のログファイルが生成されてディスクフルになる
自分は遭遇していないですが、同じチームのメンバーによると、大量のログファイルが生成されてディスクフルになる問題があるとのことです。再現条件は不明ですが、もしこの現象が起きたら factory reset すると解消するようです。
まとめ
Mac で Docker Desktop から Rancher Desktop への移行について調査した内容をまとめました。筆者が試してる限りでは今のところ特に問題に遭遇しておらず、思ったよりスムーズに移行できています。
この記事は、必ずしも Docker Desktop から Rancher Desktop への移行を推奨するものではありません。現状では Rancher Desktop は枯れたツールではないため、ユースケースによっては想定外の問題にハマることもあると思われます。自分も今後問題に遭遇することがあれば、記事に追記する予定です。
Discussion
初めまして、24卒エンジニア志望の就活生の者です。
企業選びのため、知的財産の問題を踏まえてGithub Copilotを企業内で使用できるかどうかについてずっと調べていました。
情報を見つけられずとても悩んでいましたが、特にこちらの部分がとても参考になりました。
Scrapにバッジが贈れない仕様でしたので、ささやかなお礼ですがこちらの記事にバッジを贈らせて頂きました。貴重な情報の提供をありがとうございました。