TL;DR
# インストール
$ brew install colima
# colima VM起動
$ colima start --cpu 8 --memory 12 --disk 100 -v /Volumes/projects:w
# colima環境でdockerを使う
$ docker -v
# dockerコマンドcolimaがマウントしたdocker.sockを利用するように切り替え
$ docker context use colima
# 動作確認
$ docker run hello-world
# colima VM終了
$ colima stop
背景
2022年1月31日からDocker Desktopが大企業での利用に関して有料化された。記事
(中小企業(従業員数が250人未満、年間収益が1,000万ドル未満)、個人利用、教育および非営利のオープンソースのプロジェクトでは今まで通り無料で利用が可能)
しかし、「Docker CLI」や「Docker Compose」などのコンポーネントについても引き続き無料で提供され「Docker Desktop(Docker for Mac等)」のみが今回有料化とのこと。
そのため、大企業勤務で無料で使い続けるためには、Docker Desktopをアンインストールした上で、別の手段を考える必要がある。
今回は、最小限のセットアップでmacOS上にコンテナランタイムを構築することができるcolimaを用いて環境を構築する。
前提条件
homebrewがインストール済みであること
インストール手順
colimaはdockerd相当の部分を担当するため、Docker CLIは別途homebrewでインストールする必要がある。
# Docker CLIのインストール
$ brew install docker
# colimaのインストール
$ brew install colima
使い方
使う前に把握するべきアーキテクチャ
docker for macは内部でHyperkitを使ってlinuxのVMを立ち上げており、dockerdをその中で動かしている。
そのためmacのターミナルからdockerコマンド実行時には、docker for macがこのVMからホストのmacにマウントしているdocker.sock
ファイルを経由して、VM内のdockerd
とコミュニケーションしている。
また、ホストのDiskをVMにもマウントすることで、あたかもホストのMacOS上でdockerが直接動いているようなUXを実現している。
colimaも同様にLinux VMを立ち上げ、docker.sock
をマウントするし、デフォルトで/Users/your-user-name
をVMの/Users/your-user-name
にマウントする。
また、インストール後にdocker context
という機能を利用して、dockerコマンドがdocker for macではなくcolimaがマウントしたdocker.sock
を利用するように切り替えを行なう。
始め方
まずはcolimaでVMを用意する必要がある。
初回に指定したdiskサイズだけは後から変更ができないため、ある程度余裕を持って設定する方が良い。
その他のCPU, MemoryなどはVM再起動時に設定可能。
また、/Users/your-user-name
以外のVolumeがマウントされないため、もしホームディレクトリ以外の場所で作業している場合には、明示的にマウントする必要あり。
defaultは以下の設定、引数をとることで設定を変更できる。
cpu: 2
memory: 2GiB
disk: 60GiB
$ colima start --cpu 8 --memory 12 --disk 100 -v /Volumes/projects:w
追加したいVolumeがなければ-v /Volumes/projects:w
は省略可。
この時点で通常通りdocker / docker-compose
コマンドが利用できるように。
VMを終了する際は、以下のコマンドで終了できる。
$ colima stop
VM一覧は以下で確認できる。
$ colima list
PROFILE STATUS ARCH CPUS MEMORY DISK
default Stopped x86_64 8 12GiB 100GiB
また、PCを再起動するとcolima VMも落ちるため、VMの再起動(colima start ${Profile}
)が再度必要。
その他の機能についてはcolima helpないしcolima help COMMANDを参照。