コンテンツにスキップ

Docker DesktopのオルタナティブとしてのColima

Author: Kazukichi
  • 本日は以前たかしがDiscordで言っていた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は主にLimaのラッパー
  • LimaはmacOS/Linux上でLinuxのVMを動かすためのOSS
  • LimaはmacOSの場合、macOSに用意されたVMの制御のためのAPIを利用している
    • Appleシリコンの場合はVirtualization.framework
    • Intel Macの場合はHypervisor.framework + HyperKit
  • ColimaはLimaにdockerd(高レベルランタイム)を入れ、それを操作する形でDocker互換を実現している
ColimaOrbStackDocker Desktop
ライセンスMIT(商用利用可能)MIT(将来的に有料ライセンス化)会社の規模によっては有料ライセンス
パフォーマンス高い高いあまり高くない
UICUIのみCUI/GUIを提供CUI/GUIを提供
ソースコード公開GUI部分は非公開GUI部分は非公開
開発言語GoGoGo
開発時期2021-2023-2013-
GitHubスター数23.8k7.1k70.4k
  • macOSの場合
Terminal window
$ brew install colima
$ colima --version
colima version 0.8.1
  • DockerのCLIのコンテキストがColimaを指していることを確認
    • ちなみにDockerのCLI自体は商用ライセンス問題に関係なく利用できる
    • ただし、DockerのCLI自体にDockerのエンジンは付帯していない
Terminal window
$ docker context use colima
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
colima * colima unix:///Users/k-tobita/.colima/default/docker.sock
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux Docker Desktop unix:///Users/k-tobita/.docker/run/docker.sock
  • Colimaの起動
Terminal window
$ colima start
$ 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/k-tobita/.colima/default/docker.sock
  • ここからは通常のDockerと同じ操作が行える
Terminal window
$ docker run -it --name my-alpine alpine
  • Colimaの停止
Terminal window
$ colima stop
$ colima status
FATA[0000] colima is not running
  • Docker以外のコンテナランタイムにも対応している
    • containerdやIncus(LXDベース)
  • DockerのGUI機能、実はほとんど使っていないので乗り換えても良いかも
  • Dockerよりもパフォーマンスも高いので有力
  • OrbStackのような有償化の心配もいまのところない
  • Docker以外のコンテナランタイムをサポートしている点もGOOD
  • 追記: Supabaseとの相性は良くなかった