じゃあ、おうちで学べる

思考を呼び覚ます このコードに、君は抗えるか。

Docker Desktop のアンインストールと Lima の導入

はじめに

Docker Desktop は多くの開発者にとって便利なツールですが、さまざまな理由で Lima への移行を検討するケースもあります。この記事では、MAC でDocker Desktop をアンインストールし、Lima を導入する過程を説明します。

参考文献

Docker Desktop のアンインストール

Docker Desktop のアンインストールは、公式ドキュメントの指示に従って行うことができます。アンインストールはシステムの設定やリソースの解放に役立ち、Lima の導入の準備を整えます。

# CLI から Docker Desktop をアンインストールすることもできます。さようなら。
/Applications/Docker.app/Contents/MacOS/uninstall
# Docker Desktop をアンインストールした後、削除できるファイルがいくつか残るので合わせて削除
rm -rf ~/Library/Group\ Containers/group.com.docker
rm -rf ~/Library/Containers/com.docker.docker
rm -rf ~/.docker

参照: Docker Desktop アンインストール方法

Lima のインストール

Lima は、macOSLinux 仮想マシンを容易に管理するためのツールです。Docker コンテナの実行環境として Lima を使用することで、Docker Desktop と同等の機能を低リソースで利用できます。Lima のインストールプロセスは以下のコマンドで行います。

# Lima インスタンスの作成:
# `docker` という名前の Lima インスタンスを Docker のテンプレートを使って作成します。
limactl create --name=docker template://docker
# Lima インスタンスの起動:
# 作成した `docker` インスタンスを起動します。
limactl start docker
# 稼働中の Lima インスタンスの一覧表示:
# 現在稼働中の Lima インスタンスの状態を表示します。
limactl ls
NAME       STATUS     SSH                VMTYPE    ARCH       CPUS    MEMORY    DISK      DIR
docker     Running    127.0.0.1:65015    qemu      aarch64    4       4GiB      100GiB    ~/.lima/docker

Docker CLI のインストール

Lima がインストールされた後、Docker コマンドラインインターフェース (CLI) をインストールする必要があります。以下のコマンドを使用して、macOS 用の Docker CLI をダウンロードし、インストールします。今回はdocker-25.0.4.tgzをダウンロードしますがこちらを参考に最新版をinstallしてください。

# Docker CLI バイナリのダウンロード:
# macOS 用の Docker CLI バイナリをダウンロードします。
curl -L -O https://download.docker.com/mac/static/stable/aarch64/docker-25.0.4.tgz
# ダウンロードしたアーカイブの展開:
# ダウンロードした tar.gz アーカイブを展開します。
# 毎回、調べているので悲しい
tar -xvzf docker-25.0.4.tgz
# Docker CLI の移動:
# 展開した Docker CLI をシステムの PATH の一部である /usr/local/bin に移動します。パスはどこでもいいけどブログなので...。
mv docker/docker /usr/local/bin/

参照: macOS でのクライアントバイナリのインストール

修正: brew install でのdockerのインストール

勝手に--caskとか付けて全部入るなーって思っていたのですがbrew install dockerのみの場合にはDocker CLIのみをインストールすることができます

brew install docker

我らがteraoka 師匠から教えていただきました。

参照: Lima で vz + rosetta を使って ARM VM 上で x86_64 バイナリを実行する #Docker - Qiita

Lima-Docker の設定

Lima と Docker CLI がセットアップされたら、Lima ベースの Docker 環境を利用するための設定を行います。以下のコマンドで Docker コンテキストを作成し、利用を開始します。

# Docker コンテキストの作成:
# `lima-docker` という名前の Docker コンテキストを作成し、Lima インスタンス上の Docker デーモンに接続します。
docker context create lima-docker --docker "host=unix:///Users/<username>/.lima/docker/sock/docker.sock"
# 作成した Docker コンテキストの使用:
# `lima-docker` コンテキストをアクティブにして、以降の `docker` コマンドが Lima インスタンスを対象に実行されるようにします。
docker context use lima-docker
# Docker コンテナの実行 (テスト):
# Docker 環境が正しく設定されているかを確認するため、hello-world イメージを実行します。
docker run hello-world
# Docker での nginx コンテナの実行:
# nginx イメージをバックグラウンドで実行し、ポート 8181 をコンテナのポート 80 にフォワードします。
docker run --name lima-test-nginx -d -p 8181:80 nginx

これらのステップを完了することで、Lima 上で Docker コンテナを実行し、管理することができるようになります。

おまけ:KIND (Kubernetes IN Docker) の利用

KIND (Kubernetes IN Docker) は、Docker 上に軽量な Kubernetes クラスタを構築するためのツールです。Lima 環境上で Docker を利用している場合でも、KIND を使用して Kubernetes のテスト環境を簡単にセットアップできます。

# KIND クラスタの作成:
# 新しい Kubernetes クラスタを作成します。このクラスタは Docker コンテナ内に構築されます。
$ kind create cluster
# 作成されたクラスタの一覧表示:
# 現在 KIND によって作成されたクラスタの一覧を表示します。
$ kind get clusters
kind
# クラスタ情報の取得:
# 作成した KIND クラスタのコントロールプレーンやサービスの情報を取得します。
$ kubectl cluster-info --context kind-kind
Kubernetes control plane is running at https://127.0.0.1:51050
CoreDNS is running at https://127.0.0.1:51050/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

# 全てのネームスペースで動作している Pod の一覧表示:
# クラスタ内の全ネームスペースにわたる Pod の状態を確認します。
$ kubectl get pod -A
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
kube-system          coredns-76f75df574-5glm8                     1/1     Running   0          87s
kube-system          coredns-76f75df574-jwn6z                     1/1     Running   0          87s
kube-system          etcd-kind-control-plane                      1/1     Running   0          103s
kube-system          kindnet-qlftc                                1/1     Running   0          86s
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          102s
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          100s
kube-system          kube-proxy-6nwnv                             1/1     Running   0          86s
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          100s
local-path-storage   local-path-provisioner-7577fdbbfb-vd28d      1/1     Running   0          87s

おわり。

結論

Docker Desktop のアンインストールと Lima の導入に焦点を当てました。本記事で紹介した手順を通じて、開発環境を効率的に管理し、Docker コンテナの実行を最適化することが可能です。

参考文献