はじめに
Mac環境でもDocker Desktopを卒業するべく、Docker on Limaを触ってみました。
環境
ホストOS:macOS Vetntura 13.4.1
プロセッサ:1.4GHz デュアルコアIntel Core i7
VM:Docker on Lima
limactl:0.17.0
1.各種インストール
LimaでDockerを扱うため、docker、docker-compose、limaをそれぞれインストールしていきます。
1-0.Homebrewをインストール
docker類をインストールするために、homebrewを使用します。
公式を参考にインストールします。
1-1.dockerをインストール
% brew install docker
% docker -v
Docker version 24.0.5, build ced0996600
1-2.docker-composeをインストール
% brew install docker-compose
% docker-compose -v
Docker Compose version 2.20.3
1-3.limaをインストール
% brew install lima
limaをインストールするとlimaを制御するlimactlコマンドがインストールされます。
% limactl -v
limactl version 0.17.2
2.limaでdockerを扱うための準備
2-1.limaインスタンスを作成
現状確認
limaをインストールするとdefaultインスタンスが最初から作成されています。
今回は、自分で新規インスタンスを作成してdockerを扱うようにしてみます。
まず、現状を確認。
% limactl ls
NAME STATUS SSH VMTYPE ARCH CPUS MEMORY DISK DIR
default Running 127.0.0.1:60022 qemu x86_64 4 4GiB 100GiB ~/.lima/default
設定ファイルを取得
Limaのインスタンスを作成するにはyaml形式の設定ファイルを指定します。
Limaのリポジトリにテンプレート例が複数パターン用意されてるので、
そちらを利用してインスタンスを作成します。
今回はdocker.yamlを利用します。
Linuxインスタンスを作成
「limactl start」でインスタンスを作成・起動します。
コマンド実行直後に設定の適用方法について選択肢が出ます。
今回はコマンドで指定したyamlファイルを使用するので「Proceed with the current configuration」を選択します。
% limactl start --name=develop ~/docker.yaml
? Creating an instance "develop" [Use arrows to move, type to filter]
> Proceed with the current configuration
Open an editor to review or modify the current configuration
Choose another template (docker, podman, archlinux, fedora, ...)
Exit
起動後、「limactl list」でLinuxインスタンスを一覧し、「develop」が表示されてstatusも「Running」になっていればOKです。
% limactl list
NAME STATUS SSH VMTYPE ARCH CPUS MEMORY DISK DIR
default Running 127.0.0.1:60022 qemu x86_64 4 4GiB 100GiB ~/.lima/default
develop Running 127.0.0.1:55839 qemu x86_64 4 4GiB 100GiB ~/.lima/develop
2-2.Dockerコンテキストを作成
続いて、作成したLinuxインスタンス「develop」で扱うDockerコンテキストを作成します。
現状確認
「docker context ls」でDockerコンテキストを確認します。
% docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux Docker Desktop unix:///Users/xxx/.docker/run/docker.sock
こちらもdefaultとdesktop-linuxしかないので、新規コンテキストを作成していきます。
新規コンテキストを作成
「docker context create」でコンテキストを作成できるので、developインスタンス用に新規作成します。
limaをインストールした時、ホームディレクトリ直下に「.lima」が作成されているので、
コマンド実行時にdevelopインスタンスのdocker.sockを指定します。
% docker context create develop --docker "host=unix:///Users/$USER/.lima/develop/sock/docker.sock"
develop
Successfully created context "develop"
コンテキストを確認
% docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux Docker Desktop unix:///Users/xxx/.docker/run/docker.sock
develop unix:///Users/xxx/.lima/develop/sock/docker.sock
developコンテキストが作成ましたが、 「*」マークはdefaultに表示されてます。
カレントのDockerホストはdefaultのままということなので、続けてDockerホストも切り替えます。
コンテキストの切り替え
「docker context use」でdevelopをカレントコンテキストに選択します。
% docker context use develop
develop
Current context is now "develop"
コンテキストを再度確認
% docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux Docker Desktop unix:///Users/xxx/.docker/run/docker.sock
develop * unix:///Users/xxx/.lima/develop/sock/docker.sock
指定したコンテキストに「*」が付いていれば切り替えOKです。
3.動作検証
コンテナイメージをプルしてみる
nginxのコンテナイメージをプルしてみてDockerが使用出来ることを確認してみます。
% docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
52d2b7f179e3: Pull complete
・・・
Digest: sha256:104c7c5c54f2685f0f46f3be607ce60da7085da3eaa5ad22d3d9f01594295e9c
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
コンテナイメージを確認
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest eea7b3dcba7e 3 days ago 187MB
無事、コンテナイメージをプルできました。
参考文献