はじめに
お久しぶりな投稿です。
今回は現在の参加プロジェクトでDocker Desktop for Macを使用していたら、有料になるぞ!ということだったので、代替手段を探した結果Limaを使う手段に行き着いたのでやってみたというところなのですが、その頃はバタバタしていたのでやってみた時点では投稿しなかったのですが…
元々、有料になるという話が出た時期に試しに入れてみて使っていたのですが、最近ちょっと久しぶりにLimaのアップデートをしたら、なんだか便利になっていたのでその内容のご紹介です。
ちなみに、うちのシステムは今のところテストのMock用(S3に画像を保存する処理)に使っているLocalStackのためにDockerを入れている状態です。
使用するもの
Lima : ver0.8.0以上。Mac OS上にLinux VM の環境を作るために使用します。
Docker
Homebrew : DockerやLimaはbrew install
でインストールしました。
セットアップ手順
まず、元々入れていた時に参考にさせていただいたのがこちらの記事になります。
正直インフラ系に強いわけでもないので、この内容を見てやった時点でLima のLinux VM上にDocker Engine Serverを立てて、Mac上のDocker CLI からアクセスできるようにしてDocker 使えるようにしたよという認識をしているだけです。
つい最近になって、開発環境の諸々最新にしたいと思っていろいろやっていたら、Limaのver0.8.0以上から簡単にDocker入れられるようになったというのを見かけて(参考:Docker on Lima)元の環境を消して試してみました。
Mac上にDocker のインストール
特に書くこともないかもしれませんが、brew を使ってインストールします。
brew install docker
インストール後、docker version
を実行して、Client情報が表示されれば、この時点ではOKです。
Serverの情報はまだ何もセットアップしていないのでエラーで表示されません。
Lima のインストール
まずはbrew でLimaをインストールします。
brew install lima
起動するLimaのインスタンス設定変更
Lima のインストール後、/usr/local/share/doc/lima/examples/
ディレクトリ内のファイルを確認すると、いろいろとyamlが入っているのですが、その中にdocker.yaml
があります。(参考: Lima Release v0.8.0)
VMを作るに当たっての細かい設定値は適宜ファイルの中身をいじって欲しいのですが、今回はこのファイルをdefault.yaml
に置き換えます。
そのままこのファイルを使ってVMを作ると、dockerという名前で作られるのですが、そうなるとLima関連のコマンドを使うときなどにちょっと面倒なので、私の場合はDockerが入ったもののみを使う都合上、置き換えて問題なかったのでそういうやり方にしました。
ファイル置き換え後、Limaを起動します。
Limaの起動
lima start
実行したログの最後に
To run `docker` on the host (assumes docker-cli is installed), run the following commands:
------
docker context create lima-default --docker "host=unix:///Users/{username}/.lima/default/sock/docker.sock"
docker context use lima-default
docker run hello-world
------
というような文章(hostのディレクトリは環境によりけりだと思われる)が表示されると思うので、その通りやればいいのかもですが、私はHostの設定については.profile
に環境変数の設定をしてしまいました。(最初に参考にした記事がそういう感じだったので既存の設定があったこともあり)
echo "export DOCKER_HOST=unix:///Users/{username}/.lima/default/sock/docker.sock" >> $HOME/.profile
source $HOME/.profile
設定後、docker version
を実行して、ClientとServer情報が表示されればOKです。
docker compose について
これに関しては、何か参考にしたというより私はこうしてるという話だけなのですが…
lima cat
というコマンドでLima側からLima上にないファイルを参照できるようにしてから、Lima上でdocker compose
します。
lima cat {ファイルを置いてるディレクトリのパス}/docker-compose.yml
lima docker compose up
最新だとLimaにdocker compose の v2が入っているので、上記コマンドを使用するようにしてください。
ちなみに、v2ってファイルの中身の変更があったりしたみたいですが、うちで使っている範囲だと中身が元と同じでOKだったので、元々のファイルをそのまま使っています。
ちなみに、localstack を使うためのdocker-compose.ymlはLocalStackの公式にあるのでご覧になってみてください。
おわりに
本当にただただ紹介しただけな感じですが、簡単に使えるツールとかってありがたいなと思いますよね。
ちなみに、Dockerを使いたいという話なら、Colimaというものを入れると設定とか全然考えずに使えるというのもあります。
ただ、試しに入れてみたところ、DockerのVersionが少し古めだったので公式で設定ファイルも作ってくれてるなら最新も入るしそちらでいいかなと思って使った感じです。
今のところライトユーザーなのでどちらを使うとどういう利点があるとかは深く考えていないというのもありますが…
もし何かしら間違い等ありましたら、ご指摘いただけると幸いです。
参考
Docker Desktop for Macの実用的な代替手段: lima + Docker
Docker on Lima
Lima: Linux virtual machines (on macOS, in most cases)
Docker Compose
Compose file format
The Compose Specification - Compose file
LocalStack
Colima