macOS上のコンテナ実行環境をRancher DesktopからColimaに変えてみた

macOS上のコンテナ実行環境をRancher DesktopからColimaに変えてみた

軽量なコンテナランタイムとして注目されている「Colima」への移行について、実際に試してみた経験を共有します
Clock Icon2025.02.10

お疲れさまです。とーちです。

MacOSでDockerを使用するために、Rancher Desktopを使っている方は多いのではないでしょうか?

私も長らくRancher Desktopを使っていたのですが、つい最近、この記事Colimaというツールを知り「これは良さそう」と思ったので実際に試してみることにしました。
今回は、軽量なコンテナランタイムとして注目されている「Colima」への移行について、実際に試してみた経験を共有したいと思います。

https://github.com/abiosoft/colima

とりあえずまとめ

  • Colimaは軽量でシンプルなコンテナランタイム環境を提供
  • DockerCLIは別途インストールする必要あり
  • Kubernetes環境も必要に応じて簡単に構築可能

そもそもなぜコンテナランタイムが必要なのか?

まず、MacOSでDockerを使用する際になぜコンテナランタイムが必要なんでしょうか?私は雰囲気でRancher Desktopを使ってたのでそこから確認してみました。

大前提として、Dockerコンテナは「Linux」の技術を使って動作します。具体的には「Linux カーネルの機能」を活用することで様々な機能を実現しています。(公式ドキュメントにも書いてあります)

MacOSはUNIXベースのOSではあるものの「Linux」ではないため、そのままではDockerコンテナを動かせません。そのため、Linux環境を提供するツール(Rancher DesktopやColima)が必要になります

image.png

上記の図は dockerの公式ドキュメントから参照したものですが、上記の図の中の主にDockerホストの部分をRancher DesktopやColimaが補っていると私は理解しています。

Colimaの特徴

Colimaは以下のような特徴を持つツールです

  • IntelおよびApple Silicon Mac、Linuxをサポート
  • シンプルなCLIインターフェース
  • 自動ポート転送
  • ボリュームマウント
  • 複数のインスタンス管理が可能
  • 複数のコンテナランタイムをサポート
    • Docker(オプションでKubernetesを使用可能)
    • Containerd
    • Incus

特にRancher Desktopと比べGUIなどがない分、軽量かつシンプルになりそうに感じました。自分のユースケースだとDockerコマンドの実行のみが主目的であるためGUIは必要ありません。そのためColimaに移行することにしました。

Rancher DesktopからColimaに移行してみる

1. Rancher Desktopのアンインストール

まずは必要なコンテナイメージがある場合はバックアップしましょう。私の場合であればAWSを普段から使ってるので、必要なイメージがあればECRにpushします(push手順は割愛します)。

次にRancher Desktopを停止します。メニューバーのアイコンから「Quit Rancher Desktop」を選択してください。

image.png

続いてアンインストールです。私はHomebrewでインストールしていたので、以下のコマンドでアンインストールします:

brew uninstall rancher

次に関連ファイルも削除していきます。以下のコマンドを順番に実行していきましょう。

# Rancher Desktopの設定等が入っているフォルダ
rm -fr ~/Library/Application\ Support/Rancher\ Desktop
rm -fr ~/Library/Application\ Support/rancher-desktop
# Rancher DesktopがインストールしたCLIツール等が入っているフォルダ
rm -rf ~/.rd
# Rancher Desktopのキャッシュ
rm -rf ~/Library/Caches/rancher-desktop
# Rancher Desktopのログ
rm -rf ~/Library/Logs/rancher-desktop

~/.rd ディレクトリについて少し補足です。このディレクトリにはRancher Desktopがインストールしたdocker CLIやkubectl等が入っています。私は以前、pathの問題で本来使いたいpathにあるkubectlが使えずに少しだけ手間取ったことがありました。混乱の元になるのでRancher Desktopを使わないのであれば削除しておくべきだと思います。

2. Colimaのインストールと初期設定

それでは、Colimaをインストールしていきましょう。インストールコマンドは以下です。後述しますがこのタイミングで brew install docker でDockerCLIも入れておいたほうがいいです。

brew install colima

インストールすると以下のようなメッセージが表示されました

To start colima now and restart at login:
  brew services start colima
Or, if you don't want/need a background service you can just run:
  /opt/homebrew/opt/colima/bin/colima start -f

ログイン時に自動で起動させたいので、以下のコマンドを実行します

brew services start colima

brew servicesは初めて使いましたが、brewのサブコマンドでログイン時の自動起動を設定できるんですね。

以下のページがbrew servicesの使用方法について分かりやすく説明されていました。個人的にbrew services stopで自動起動設定まで削除されてしまう挙動に少し振り回されたので、初めてbrew servicesコマンドを使う方は目を通しておいたほうがいいかもしれません。

https://qiita.com/tdzz/items/331bb677b3ff1499b650

3. トラブルシューティング

さて、ここでbrew services listを確認すると、エラーが出ていました

> brew services list
Name    Status     User              File
colima  error  256 username ~/Library/LaunchAgents/homebrew.mxcl.colima.plist
unbound none           

手動でColimaを起動してみると原因が分かりました

> colima start --very-verbose
<中略>
FATA[0000] dependency check failed for docker: docker not found, run 'brew install docker' to install 

Docker CLIを入れるのを忘れてましたね。ちゃんとReadmeにも書いてあります。

brew install docker

インストール後、サービスを再起動してみます

brew services restart colima

するとサービス上は起動成功したように見えましたが、colimaコマンドでstatusを確認してみると

> colima status
FATA[0000] error retrieving current runtime: empty value 

ランタイムの設定が空になっているようです。GitHubのREADMEには「You can use the docker client on macOS after colima start with no additional setup.」とあるので、やってみます。

> colima start --very-verbose
TRAC[0000] cmd ["limactl" "info"] 
<中略>
WARN[0000] already running, ignoring   

> colima status
INFO[0000] colima is running using macOS Virtualization.Framework 
INFO[0000] arch: aarch64                                
INFO[0000] runtime: docker                              
INFO[0000] mountType: sshfs                             
INFO[0000] socket: unix:///Users/username/.colima/default/docker.sock 

よさそうですね!念の為再度serviceの再起動をして問題ないか確認してみます

> brew services restart colima
Stopping `colima`... (might take a while)
==> Successfully stopped `colima` (label: homebrew.mxcl.colima)
==> Successfully started `colima` (label: homebrew.mxcl.colima)

すると起動直後は以下のようにColimaが起動してないというエラーとなりましたが、数十秒ほど待つと正常なステータスになりました。

> colima status
FATA[0000] colima is not running  

> colima status
INFO[0000] colima is running using macOS Virtualization.Framework 
INFO[0000] arch: aarch64                                
INFO[0000] runtime: docker                              
INFO[0000] mountType: sshfs                             
INFO[0000] socket: unix:///Users/username/.colima/default/docker.sock 

4. 動作確認

実際にDockerコマンドを使って動作確認をしてみましょう

# イメージのpull
> docker pull nginx:latest
latest: Pulling from library/nginx
4d2547c08499: Pull complete 
<中略>
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

# コンテナイメージの起動
> docker run -d -p 80:80 nginx:latest
acad026a6feed1454e33ac1ed28fa3ed4095aa6981a0f1689ad7ca1185976010

# アクセス確認
> curl localhost:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
<以下略>

dockerコマンドでコンテナイメージをpullしたり使用したりという用途においてはまったく問題なさそうですね。

5. Colimaの設定について

Colimaの起動時に引数を指定することで色々と設定を変えることができます。

例えばColimaはLinuxが動くVMとして起動するわけですが、そのVMのリソースを以下のように変更することができます

colima start --cpu 1 --memory 2 --disk 10

これでCPUコア数1、メモリ2GB、ディスク容量10GBのVMとして起動されます。

また、Kubernetes環境が必要な場合は--kubernetesオプションを付けるだけでOKです。

> colima start --kubernetes
INFO[0000] starting colima                              
INFO[0000] runtime: docker+k3s                          
INFO[0003] starting ...                                  context=vm
<中略>
INFO[0058] Switched to context "colima".                 context=kubernetes
INFO[0058] done                                         

kubectlの設定も自動で行われます

> kubectl config get-contexts
CURRENT   NAME     CLUSTER   AUTHINFO   NAMESPACE
*         colima   colima    colima    

podもすんなり起動できました

> kubectl run nginx-test --image=nginx
pod/nginx-test created
> kubectl get pods
NAME         READY   STATUS    RESTARTS   AGE
nginx-test   1/1     Running   0          16s

設定の注意点

なお、上記のように一度 colima start にオプションをつけて実行すると、次回以降の起動時にも同じ設定が使われます。例えば上記の場合、次回からもKubernetesが有効な状態で起動します。

起動時の設定を変更するには以下のコマンドを実行します

> colima start -e

すると以下のように(少なくともvscodeの場合は)設定ファイルが自動で開きます

image.png

設定を変更して保存すると、以下のように確認が表示されます:

> colima start -e
INFO[0000] vscode detected, editing in vscode           
colima is currently running, restart to apply changes? [y/N] 

ここでyを選択すれば、新しい設定で再起動されます。

まとめ

Rancher DesktopからColimaへ移行してみました。以前、何度かRancher Desktopの挙動に悩まされたこと(上で書いた~/.rd ディレクトリの件とか)があったのでよりシンプルな環境にしたいなというのが今回の私のモチベーションでした。同じような考えの方はぜひColimaを試してみてください。

以上、とーちでした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.