Docker DesktopのオルタナティブとしてのColima
- 本日は以前たかしがDiscordで言っていたColimaという技術を検証します
Colimaとは
Section titled “Colimaとは”- Docker Desktopの代替としての選択肢
- Docker Desktopの商用ライセンス問題を契機に作られ(2021年〜)、動作も比較的軽い
- Colima = Container On Localhost In MAcos/Linux
- 名前の通り、macOSとLinuxに対応しており、ローカル開発環境での利用を想定している(本番環境での利用は想定していない)
- Docker互換なのでDockerfileやDocker Composeも扱える
- Go製
- GUIは提供されていない
- GitHub: https://github.com/abiosoft/colima
- Organizationではなく個人アカウント上のリポジトリで開発されている模様
Colimaの内部構造
Section titled “Colimaの内部構造”- Colimaは主にLimaのラッパー
- LimaはmacOS/Linux上でLinuxのVMを動かすためのOSS
- LimaはmacOSの場合、macOSに用意されたVMの制御のためのAPIを利用している
- Appleシリコンの場合はVirtualization.framework
- Intel Macの場合はHypervisor.framework + HyperKit
- ColimaはLimaにdockerd(高レベルランタイム)を入れ、それを操作する形でDocker互換を実現している
VS OrbStack + Docker Desktop
Section titled “VS OrbStack + Docker Desktop”| Colima | OrbStack | Docker Desktop | |
|---|---|---|---|
| ライセンス | MIT(商用利用可能) | MIT(将来的に有料ライセンス化) | 会社の規模によっては有料ライセンス |
| パフォーマンス | 高い | 高い | あまり高くない |
| UI | CUIのみ | CUI/GUIを提供 | CUI/GUIを提供 |
| ソースコード | 公開 | GUI部分は非公開 | GUI部分は非公開 |
| 開発言語 | Go | Go | Go |
| 開発時期 | 2021- | 2023- | 2013- |
| GitHubスター数 | 23.8k | 7.1k | 70.4k |
インストール
Section titled “インストール”- macOSの場合
$ brew install colima$ colima --versioncolima version 0.8.1DockerのCLIの設定
Section titled “DockerのCLIの設定”- DockerのCLIのコンテキストがColimaを指していることを確認
- ちなみにDockerのCLI自体は商用ライセンス問題に関係なく利用できる
- ただし、DockerのCLI自体にDockerのエンジンは付帯していない
$ docker context use colima$ docker context lsNAME DESCRIPTION DOCKER ENDPOINT ERRORcolima * colima unix:///Users/k-tobita/.colima/default/docker.sockdefault Current DOCKER_HOST based configuration unix:///var/run/docker.sockdesktop-linux Docker Desktop unix:///Users/k-tobita/.docker/run/docker.sock- Colimaの起動
$ colima start$ colima statusINFO[0000] colima is running using macOS Virtualization.FrameworkINFO[0000] arch: aarch64INFO[0000] runtime: dockerINFO[0000] mountType: sshfsINFO[0000] socket: unix:///Users/k-tobita/.colima/default/docker.sock- ここからは通常のDockerと同じ操作が行える
$ docker run -it --name my-alpine alpine- Colimaの停止
$ colima stop$ colima statusFATA[0000] colima is not running余談: Colimaのサポート環境
Section titled “余談: Colimaのサポート環境”- Docker以外のコンテナランタイムにも対応している
- containerdやIncus(LXDベース)
- DockerのGUI機能、実はほとんど使っていないので乗り換えても良いかも
- Dockerよりもパフォーマンスも高いので有力
- OrbStackのような有償化の心配もいまのところない
- Docker以外のコンテナランタイムをサポートしている点もGOOD
- 追記: Supabaseとの相性は良くなかった