Docker Desktop→OrbStackにローカル環境を移行してみた

# OrbStackとは

サイトのURLは[こちら](https://orbstack.dev/)
Docker Desktop for Macの代替として注目されているらしいです。
macOS上でDockerコンテナ等やLinuxマシン、Kubernetes等を動かせたりします。

# 本題
Docker Desktopで起動していたコンテナとかイメージを諸々OrbStackに移行したい！
となった時の手順や注意点などを主にこの記事では記載しております。
一通り網羅できるような記事としてかけていたら嬉しいです。

## OrbStackをインストール
方法は、2種類あります。
1. Homebrewを使ったインストール
    ```bash
    brew install orbstack
    ```
2. [サイト](https://orbstack.dev/download)からdmg形式のファイルをダウンロードする

## OrbStackの起動
FinderのアプリケーションからOrbStackのアイコンを探し、クリックし起動
![スクリーンショット 2024-12-27 12.32.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699389/50192854-0228-af6b-b28e-e6ec28ec0694.png)

起動後、上記のような画面が出てきます。
Docker, Kubernetes, Linuxどれを利用するのか選択します。
今回は、Docker DesktopからOrbStackに移行するので、Dockerを選択します。

トップ画面
![orbstack_top_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699389/da1b6244-8a02-47ef-fb6a-35dde76dde8f.png)
Dockerを選択すると上記のようなトップ画面が出ます。

＊トップ画面が出てからDocker Desktopの内容からmigrateしてしまうケースがあるらしいです。

## Docker Desktop→OrbStackにコンテナやイメージの情報をmigrateする
2種類の方法があります。
1. TOP画面に表示されている"Migrate from Docker Desktop”をクリックする
2. 上部メニューから”File”->“Migrate Docker Data”でDocker Desktopにあるコンテナ、ボリューム、イメージをOrbStackに移してくれます
    ![migrate_menu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699389/6c0fb2aa-c13a-9ceb-649a-08501702a255.png)

migrateした後、下記のようなポップアップが出ることがある。

![migrate_error_モザイク.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699389/ee51ec43-1660-6237-8226-dfca95733579.png)

内容はモザイクをつけていますが、
```bash
container /~: create container: [Docker] No such image: ...
```
のような内容が記載されています。
簡単に言えば、migrateしたけど、移せなかった内容があるよ！
ということです。

重要なコンテナやイメージではないなら気にしなくても問題ないかと思います。（私は、特に問題なかったです）
今回私の方でエラーが出たのは、セットアップ中に作成したデータやイメージなどが移せなかっただけで、セットアップ時に再度作成するので、問題なかったです。

## Dockerコンテキスト情報を確認と変更
```bash
docker context ls
```
上記、コマンドは、利用しているコンテキストを確認する
出力例
```bash
$ docker context ls
NAME         DESCRIPTION                               DOCKER ENDPOINT                                         ERROR
default      Current DOCKER_HOST based configuration   unix:///hogehoge
orbstack *   OrbStack                                  unix:///hogehoge
```
マイグレーションが完了したなら、Docker Desktopは不要でコンテキストとしては、OrbStackを指し示すようにする。そのため、下記コマンドを実行
"＊"が今利用しているコンテキストになります。
```bash
docker context use orbstack
```
出力例
```bash
% docker context use orbstack
orbstack
Current context is now "orbstack"
```

## Dockerネットワークの確認や削除
Docker Desktopで作成したDocker Networkが存在すると同じ名前でOrbStack上でDocker Networkを構築することができません。（同じ名前のネットワークが存在しますみたいなエラーが出ます。）

なので、Dockerネットワークを確認し、不要なら削除する
Dockerネットワークの確認
```bash
docker network ls
```
不要なネットワークの削除
```bash
docker network rm ~
```

## Dockerコンテナの立ち上げ
各環境でコマンドなどで立ち上げる
＊そこは詳細に記載はしないです。
各ローカル環境ごとにコマンド等あるかと思いますので...

# 他にできることやトラブル解決方法とか
## buildxコマンド
Q: docker-buildxってなにか
A: コンテナイメージを作成する際にamd64アーキテクチャ向けイメージだけではなく、arm向けのイメージも作りたい時に使う感じです。

詳細は[こちら](https://github.com/docker/buildx)

こういったコマンドなどは使うことができます。

## Docker Desktopで作ったマルチビルドが残ってる
```bash
docker buildx rm multibuild
docker buildx create --name multibuild
docker buildx use multibuild
```
Docker Desktopでマルチビルドを作っていると、OrbStackを起動してもマルチビルドが残っていたりします。
Docker Desktopで作ったマルチが不要なら消すことで、エラーが直ります。

# 移行してみた感想
migrateしたら普通にOrbStackでも動きました。
移行もかなり楽でした。

商用利用の場合、料金比較等するかと思うので、OrbStackの方が安い可能性もあるかと思うので、検討してみると良いかと思います。
また、30日？はPro仕様で動いてくれるらしいので、お試しで移行チャレンジして、動作問題なければ、本格的に移行でもありかもしれません。

久々にちゃんとした技術記事書きました。
拙い文章ですが、また後で書きます。