DockerDesktopからcolimaにお乗り換えの方はこちらです

## はじめに

DockerDesktopを卒業し、colimaに移行したい。
macからDokcerDesktopを削除するだけでも意外と苦労したので、
作業内容をメモしておく。

DockerDesktopを使用していない人は、
colimaをbrewでインストールする手順から始めてください。

## 動作環境

- CPU: Apple M1 Max, Apple M3 Pro
- OS: macOS Sonoma

## 手順概要

1. DockerDesktopのアプリケーションを削除
1. 自分が使っているターミナルにフルアクセスの権限付与
1. sudoコマンドで各種ファイルを削除する
1. colimaをbrewでinstall
1. docker compose コマンドが通るように設定
1. buildxをbrewでinstall
1. buildxが使えるように設定

## finderでアプリ削除

DockerDesktopが起動中の場合はまず停止させQuitした後、
`finder` > `アプリケーション` からDockerを右クリックして`ゴミ箱に移動`で削除してください。

## フルアクセスの設定

システム環境設定から、

`システム環境設定` > `プライバシーとセキュリティ` > `フルディスクアクセス`で
ターミナルにフルディスクアクセスの権限を与える

![システム環境設定の参考画面](https://bitter-snowdrop-03e.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fc1a7fda7-198a-466a-8dd2-0bad57d3f317%2Ffc512ea6-cc49-4d4e-8c3e-6090ecbc10fe%2FUntitled.png?table=block&id=267adebd-dc7a-47db-8a8e-a37258993427&spaceId=c1a7fda7-198a-466a-8dd2-0bad57d3f317&width=1420&userId=&cache=v2)

以下のサイトを参考に各ファイルを削除

[MacでDockerを完全にアンインストールする3つの方法](https://www.drbuho.com/jp/how-to/uninstall-docker-mac)

```bash
sudo rm -rf ~/.docker
sudo rm -rf ~/Library/Containers/com.docker.docker
sudo rm -rf ~/Library/Group\ Containers/group.com.docker
sudo rm -rf ~/Library/Caches/com.docker.docker
sudo rm -rf /Library/PrivilegedHelperTools/com.docker.vmnetd
sudo rm -rf /Library/LaunchDaemons/com.docker.vmnetd.plist
sudo rm -rf /usr/local/lib/docker
sudo rm -rf ~/Library/Application\ Support/Docker\ Desktop
sudo rm -rf ~/Library/Preferences/com.docker.docker.plist
sudo rm -rf ~/Library/Saved\ Application\ State/com.electron.docker-frontend.savedState
sudo rm -rf ~/Library/Group\ Containers/group.com.docker
sudo rm -rf ~/Library/Logs/Docker\ Desktop
sudo rm -rf ~/Library/Preferences/com.electron.docker-frontend.plist
sudo rm -rf ~/Library/Cookies/com.docker.docker.binarycookies
```

この操作が終わったら、
ターミナルのフルアクセス権限を解除することをお勧めします。


## colimaをbrewでインストール

公式のGithubは下記のリンク参照。

https://github.com/abiosoft/colima

homebrewを使ってインストールするのが楽。

```bash
# Homebrew
brew install colima docker docker-compose
```

インストールが全部終わるまでに5~10分ぐらいかかった。

ここまでインストールができると、`docker-compose` コマンドが使えるようになります。
が、v2 の `docker compose` コマンドが使いたいのでもう少し設定を行います。

## docker compose コマンドが通るように設定

どうやら、インストールのタイミングで注意書きが出ていたみたいですが、
Docker compose は Docker plugin として扱われるため、シンボリックリンクを追加する必要があります。

(後ほど出てくるbuildxも似たことをする必要あり)

```bash
mkdir -p ~/.docker/cli-plugins
ln -sfn /opt/homebrew/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose

docker compose version
```

最後のdocker compose versionでversionが表示されればOKです〜👍

## buildxを導入する

DockerDesktopの場合、ダウンロードするタイミングで自動的にbuildxも導入されますが、
colimaはそうでは無いので自分でbuildxを入れる必要があります。

もし、buildxを導入せずに使っていると、
`docker image build ~` のコマンドを打つタイミングでbuildxを導入セヨと警告されます💦
(↓こんな警告メッセージ)
```plaintext
DEPRECATED: The legacy builder is deprecated and will be removed in a future release.
            Install the buildx component to build images with BuildKit:
            https://docs.docker.com/go/buildx/
```

導入手順は公式のドキュメントに記載されています。
[colima F&Q リンク先](https://github.com/abiosoft/colima/blob/main/docs/FAQ.md#docker-buildx-plugin-is-missing)

(↓抜粋)
```bash
brew install docker-buildx
# Follow the caveats mentioned in the install instructions:
# mkdir -p ~/.docker/cli-plugins
# ln -sfn $(which docker-buildx) ~/.docker/cli-plugins/docker-buildx
docker buildx version # verify installation
```
まず、
```bash
brew install docker-buildx
``` 
でbuildxをインストールします。
次に、
```bash
ln -sfn $(which docker-buildx) ~/.docker/cli-plugins/docker-buildx
```
でシンボリックリンクを追加します。

インストールできたかを確認するには、
```bash
docker buildx version
```
を打ってください。
`github.com/docker/buildx v0.14.1 Homebrew` とか出てくるはずです。

しれっと、`mkdir -p ~` のコマンドをスルーしていますが、`docker compose`を使えるようにしたタイミングで、すでにディレクトリを作成済みなのでスキップしています。


## お疲れ様でした。使ってみましょう。

colimaを起動してDockerデーモンが動く状態を作る。

```bash
colima start
```

初めての起動はちょっと時間がかかります。
以下の画像のようにDoneが表示されたら無事に起動しています。

![colima起動時のターミナル画面](https://bitter-snowdrop-03e.notion.site/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fc1a7fda7-198a-466a-8dd2-0bad57d3f317%2Fb2d848f5-08f9-404f-9766-267359d9029b%2FUntitled.png?table=block&id=66bbc60d-5b3b-4759-a88f-8c0e7ddd2d09&spaceId=c1a7fda7-198a-466a-8dd2-0bad57d3f317&width=1260&userId=&cache=v2)


自分のプロダクトでdockerを動かしてみる。

```bash
# ご自身のプロダクト、任意のcdで
docker compose up
```

ここまでの設定が正しくできていれば起動するはずです。


## （余談)colimaを使う際の注意点
colima startをするときに、CPU, メモリ, ストレージの最大値を設定することができます。

例として、1 CPU, 2GiB memory, 10GiB storageの設定の場合はこう。

```bash
colima start --cpu 1 --memory 2 --disk 10
```

先人の使用感を聞くところによると、たまにcolimaはだんまりでスネながら停止してることが…。

そんなときは、慌てず再起移動だ。
ということで、

```bash
colima stop
colima delete
colima start
```

を順番に実行すれば良き。

delete までする必要があるのか？は個人的に少し検証が必要ですが、
確実に…という事でこのようなことをしています。

makefileとかを作成して、
`make colima restart`とかを`colima stop` ~ `colima start` にあてがったらほんのちょっとだけ楽になる…かも。