この記事の目的
- docker desktopを使わずに、macでdocker操作できること
書いてること、書いてないこと
- 目的を達成するまでの手順を書いてある
- limaを使ってdocker環境を構築している。limaの操作が書いてある
- macでdocker操作できる所までを書いてあるので、dockerを使って何かすることは書いていない
こんな人に読んでもらいたい
- docker desktopを使えない人
- macユーザー
記事を書いた背景
- これまでmacでdockerを使うには、docker desktopをインストールするのが手っ取り早かった
- しかしdocker desktopが有償提供になり、利用できないケースがでてきた
- 個人利用を除くとdocker desktopは無償利用ができない
- docker desktopなしでdockerを使えるようにする記事は多くあったけど情報がありすぎて混乱したので、自分なりに整理したかった
手順を実施する前の基礎知識
- dockerが動いている仕組みと、limaというツールの基礎知識があると、後述の手順への理解が深まると思ったので記載した(理解の浅い部分があれば指摘いただると幸いです)
- docker 操作するには、docker clientとdocker server(docker engine)が必要
- docker clientはmacでも利用可
- docker serverはlinuxマシンでしか動かない
- これまでdocker desktop for macがこの辺りをうまいことやってくれていたけど、docker desktopが使えない場合は代替物が必要
-
limaというツールを使って、mac上にlinuxVMを作成する
- docker serverをlimaVMで動かす
- lima以外にも方法はあるみたいだけど、記事が豊富なのでlimaを採用。
作業手順
- 本題
前提条件(著者の環境)
- mac monterey , v12.4
手順
- macにdocker clientをインストールする
- limaをインストールする
- limaでVMを立ち上げる
- macから直接docekrを操作する
1. macにdocker clientをインストールする [mac上での操作]
- brewインストール
brew install docker
- インストールされたことを確認
- インストールされていればversionが返される
docker -v
2. limaをインストールする [mac上での操作]
- brewでlimaをインストールする
- limaのgetting started
- インストールすると
limactl
,lima
コマンドが使えるようになる
brew install lima
- インストールされたことを確認する
- インストールされていればversionが返ってくるはず
limactl --version
3. limaでVMを立ち上げる [mac上での操作]
-
VMの設定ファイルをダウンロードする
- もろもろ設定済みのVMイメージが公開されている。VMへのdockerインストールが省けてかなり楽
curl https://raw.githubusercontent.com/lima-vm/lima/v0.7.4/examples/docker.yaml > docker_example.yaml
- [任意] 設定ファイルにVMのスペックを追記する
- VMのメモリ、ストレージを設定する
- そのままだと、
cpus:4, memory:10GiB, disk: 100GiB
で立ち上がってしまうので、オーバスペックだと感じる人は編集する
# 以下をdocker_example.yamlに追記(値は任意で変更)
cpus: 2
memory: "2GiB"
disk: "10GiB"
- ダウンロードした設定ファイルを元に、VMを立ち上げる
limactl start docker_example.yaml
- VMが立ち上がったことを確認する
-
docker_example
がリストに表示されていて、ステータスがrunnningになっていればOK
-
limactl list
- これでlimaVM上からdocker操作が可能になった
- ただ、docker操作するたびにlimaVMにログインすることは面倒
4. macから直接docekrを操作する [mac上での操作]
- limaVM上のdocker engineを参照させるためにシンボリックリンクを貼る
- docker操作するには、docker clientとdocker server(docker engine)が必要だが、docker serverはVM上にしかない
- docker engineを使用するために
/var/run/sock
を参照するようになっているが、この向き先をlimaVM上で動くdocker.sock
に向ける
ln -nfs ~/.lima/docker_example/sock/docker.sock /var/run/docker.sock
- macからdockerコマンドが使えることを確認する
-
Client:
とServer: Docker Engine - Community
のversionが表示されていればOK。あとは自由にdocker操作を楽しむ。
-
docker version
おまけ(よく使いそうな limactl, dockerコマンド)
- 上記でtくったdocker環境を保守していく上で、使いそうなコマンドを残しておくと便利だと思ったので記載
limaコマンド
- limaVM停止
limactl stop {VM名}
- limaVM削除
limactl delete {VM名}
- limaVMの確認
limactl list
dockerコマンド
- docker コンテナの停止
sudo docekr stop {コンテナID}